mirror of
https://github.com/php/php-src.git
synced 2024-09-22 18:37:25 +00:00
97f10fc341
Currently, it's possible to override `php -a`s completion functionality to provide an alternative to the C implementation, with `readline_completion_function()`. However, that surprisingly gets overridden when called from `auto_prepend_file`, because those scripts get run before the interactive shell is started. I believe that not overriding it would be more consistent with what happens when you override the completion function **after** the interactive shell. CLI is the only built-in API that uses this (See discussion in GH-5872). I believe MINIT and RINIT will only run once when invoked with `php -a`. Add documentation about the architecture of how php uses readline/libedit Closes GH-5872 |
||
---|---|---|
.. | ||
tests | ||
config.m4 | ||
config.w32 | ||
CREDITS | ||
php_readline.h | ||
readline_arginfo.h | ||
readline_cli.c | ||
readline_cli.h | ||
readline.c | ||
readline.stub.php | ||
README.md |
readline
Provides generic line editing, history, and tokenization functions. See https://www.php.net/manual/en/book.readline.php
Implementation Details
C variables starting with rl_*
are declared by the readline library
(or are macros referring to variables from the libedit library).
See http://web.mit.edu/gnu/doc/html/rlman_2.html
This should only be used in the CLI SAPI. Historically, the code lived in sapi/cli, but many distributions build readline as a shared extension. Therefore, that code was split into ext/readline so that this can dynamically be loaded. With other SAPIs, readline is/should be disabled.
readline_cli.c
implements most of the interactive shell(php -a
).