readline_callback_handler_install
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
readline_callback_handler_install β ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ callback-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ readline ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π», ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ callback-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ readline, ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ
prompt ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
ΠΠΎΠ²ΡΠΎΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π· ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΎΠ³ΠΎ
callback-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠΈ.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» callback-ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ΄ΠΎΠ±Π΅Π½ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Ρ
stream_select(), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅
ΠΎΡ readline(), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅ΡΠ΅Π΄ΠΎΠ²Π°ΡΡ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄
ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
prompt
-
Π‘ΡΡΠΎΠΊΠ° ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΡ.
callback
-
Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠ°Ρ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ
callback Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ
ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ - Π²ΠΎΠ·Π²ΡΠ°ΡΡΠ½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
ΠΡΠΈΠΌΠ΅ΡΡ
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ callback-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° readline
<?php
function rl_callback($ret)
{
global $c, $prompting;
echo "ΠΡ Π²Π²Π΅Π»ΠΈ: $ret\n";
$c++;
if ($c > 10) {
$prompting = false;
readline_callback_handler_remove();
} else {
readline_callback_handler_install("[$c] ΠΠΎΠ³ΠΎΠ²ΠΎΡΠΈ ΡΠΎ ΠΌΠ½ΠΎΠΉ: ", 'rl_callback');
}
}
$c = 1;
$prompting = true;
readline_callback_handler_install("[$c] ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ: ", 'rl_callback');
while ($prompting) {
$w = NULL;
$e = NULL;
$n = stream_select($r = array(STDIN), $w, $e, null);
if ($n && in_array(STDIN, $r)) {
// ΡΠΈΡΠ°Π΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ» ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ callback-ΡΡΠ½ΠΊΡΠΈΡ,
// Π΅ΡΠ»ΠΈ Π²Π²Π΅Π΄ΡΠ½ ΡΠΈΠΌΠ²ΠΎΠ» Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
readline_callback_read_char();
}
}
echo "ΠΠ²ΠΎΠ΄ ΠΎΡΠΊΠ»ΡΡΡΠ½. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.\n";
?>
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
- readline_callback_handler_remove() - Π£Π΄Π°Π»ΡΠ΅Ρ ΡΠ°Π½Π΅Π΅ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ callback-ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»
- readline_callback_read_char() - Π§ΠΈΡΠ°Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ» ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ callback-ΡΡΠ½ΠΊΡΠΈΡ readline, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½Π° ΡΡΡΠΎΠΊΠ°
- stream_select() - ΠΠ°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° select() Π½Π° ΠΌΠ°ΡΡΠΈΠ²Π°Ρ
ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ