在PHP中,readline 扩展函数实现了访问 GNU Readline 库的接口,这些函数提供了可编辑的命令行。例如在 Bash 中允许使用箭头按键来插入字符或者翻看历史命令,由于这个库的交互特性,对编写 Web 应用程序没多大用处,但当编写从命令行使用的脚本时非常有用。
注意:从 PHP 7.1.0 开始,该扩展支持 Windows。
一、安装
为了使用这些函数,需要编译 PHP 的 CGI 或 CLI 版本,并且这个版本必须支持 readline。在编译 PHP 时,需要包含 –with-readline[=DIR] 配置选项来启用 readline 支持。如果希望使用 libedit 替代 readline,那么应当在编译 PHP 时指定 –with-libedit[=DIR] 配置选项。
从 PHP 7.1.0 版本开始,在 Windows 系统上,此扩展是默认可用的,无需进行额外配置。
二、运行时配置
这些函数的行为受 php.ini 中的设置影响,以下是配置指令的简短说明:
- cli.pager string:命令行显示输出的外部工具;
- cli.prompt string:命令行提示
三、预定义常量
下列常量由此扩展定义,且仅在此扩展编译入 PHP 或在运行时动态载入时可用。
READLINE_LIB (字符串):用于读行支持的库;目前是 readline 或 libedit。
四、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 — 读取一行。