ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ ΠΊΠΎΠ½ΡΠΎΠ»Ρ
ΠΠΎΠ΄ΡΠ»Ρ CLI SAPI ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ
ΠΎΠΏΡΠΈΡ -a, Π΅ΡΠ»ΠΈ PHP ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΠΈ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ
--with-readline.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ PHP PHP 7.1.0 ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² ΠΠ‘ Windows,
Π΅ΡΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ readline Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ.
ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΡΠΌΠ΅Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°ΠΌ PHP-ΠΊΠΎΠ΄.
ΠΡΠΈΠΌΠ΅Ρ #1 ΠΠ°ΠΏΡΡΠΊ ΠΊΠΎΠ΄Π° Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ
$ php -a
Interactive shell
php > echo 5+8;
13
php > function addTwo($n)
php > {
php { return $n + 2;
php { }
php > var_dump(addtwo(2));
int(4)
php >
ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡΠΈ Tab ΡΠ°ΠΊΠΆΠ΅ Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅Ρ
Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΊΠ»Π°ΡΡΠΎΠ², ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, Π²ΡΠ·ΠΎΠ²Ρ
ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ #2 ΠΠ²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ»Π°Π²ΠΈΡΠ΅ Tab
ΠΠ²ΠΎΠΉΠ½ΠΎΠ΅ Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ Tab ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²,
Π΅ΡΠ»ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ:
php > strp[TAB][TAB]
strpbrk strpos strptime
php > strp
ΠΠΎΠ³Π΄Π° Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠ΅ Π½Π°ΠΆΠ°ΡΠΈΠ΅
Tab Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ ΠΎΡΡΠ°Π²ΡΠΈΠΉΡΡ ΡΠ΅ΠΊΡΡ Π½Π° ΡΠΎΠΉ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠΉ ΡΡΡΠΎΠΊΠ΅:
ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ ΠΈΠΌΡΠ½, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ²ΠΈΠ»ΠΈ
Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ΅ΡΡΠΈΠΈ:
php > $fooThisIsAReallyLongVariableName = 42;
php > $foo[TAB]ThisIsAReallyLongVariableName
ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° Ρ
ΡΠ°Π½ΠΈΡ ΠΈΡΡΠΎΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄, Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ
Π½Π°ΠΆΠΈΠΌΠ°ΡΡ ΡΡΡΠ΅Π»ΠΊΠΈ Π²Π²Π΅ΡΡ
ΠΈ Π²Π½ΠΈΠ·.
ΠΡΡΠΎΡΠΈΡ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ ~/.php_history.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ PHP 8.4.0 ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ Ρ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΎΠΆΠ½ΠΎ
Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ PHP_HISTFILE.
ΠΠΎΠ΄ΡΠ»Ρ CLI SAPI ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π²Π΅ Π½ΠΎΠ²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² ΡΠ°ΠΉΠ»Π΅ php.ini:
cli.pager ΠΈ cli.prompt.
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° cli.pager ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
Π²Π½Π΅ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ less
Π΄Π»Ρ ΠΏΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°, Π° Π½Π΅ ΠΏΡΡΠΌΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ
Π½Π° ΡΠΊΡΠ°Π½.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° cli.prompt ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π·Π°Π΄Π°Π²Π°ΡΡ
ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ php > Π½Π° Π²Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
Π ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
ΡΠ°ΠΉΠ»Π° php.ini ΡΠ΅ΡΠ΅Π· ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅.
ΠΡΠΈΠΌΠ΅Ρ #3 Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ°ΠΉΠ»Π° php.ini Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° cli.prompt:
php > #cli.prompt=hello world :>
hello world :>
ΠΠ±ΡΠ°ΡΠ½ΡΠΌΠΈ ΠΊΠ°Π²ΡΡΠΊΠ°ΠΌΠΈ Π·Π°Π΄Π°ΡΡ PHP-ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ
Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ Π² ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠΈ Π½Π° Π²Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
php > #cli.prompt=`echo date('H:i:s');` php >
15:49:35 php > echo 'hi';
hi
15:49:43 php > sleep(2);
15:49:45 php >
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° less Π΄Π»Ρ ΠΏΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ
:
php > #cli.pager=less
php > phpinfo();
(output displayed in less)
php >
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° cli.prompt ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ
Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΡ
ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ:
Π£ΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ cli.prompt
| Π£ΠΏΡΠ°Π²Π»ΡΡΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ |
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
\e |
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ² Π² ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
ΠΡΠΈΠΌΠ΅Ρ: \e[032m\v \e[031m\b \e[34m\> \e[0m
|
\v |
ΠΠ΅ΡΡΠΈΡ PHP. |
\b |
ΠΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ Π² ΠΊΠ°ΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ PHP ΠΌΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌΡΡ. ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° /*
ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΌΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌΡΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠ½Π΅ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ
Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ php.
|
\> |
Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ» >,
Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π²Π½ΡΡΡΠΈ Π½Π΅Π·Π°ΠΊΡΡΡΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΈΠ»ΠΈ ΡΡΡΠΎΠΊΠΈ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ: ' " { ( >
|
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅:
Π€Π°ΠΉΠ»Ρ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΡΠ½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΡΠΈΠΉ
auto_prepend_file ΠΈ
auto_append_file
ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π² ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ,
Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Π΄ΠΎ ΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ
ΠΠΎ PHP 8.1.0 ΠΏΡΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ readline Π²ΡΠ·ΠΎΠ² ΡΠ°ΠΉΠ»Π° CLI SAPI
Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ -a Π·Π°ΠΏΡΡΠΊΠ°Π» ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ.
Π ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ PHP-ΡΠΊΡΠΈΠΏΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ
Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ STDIN, Π·Π°ΡΠ΅ΠΌ Π·Π°Π²Π΅ΡΡΠ°Ρ Π²Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ ΠΊΠ»Π°Π²ΠΈΡ
CTRL
+D
(Π² POSIX-ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
) ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ
CTRL
+Z
,
Π·Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠ΄ΡΡ ΠΊΠ»Π°Π²ΠΈΡΠ° ENTER (Π² ΠΠ‘ Windows), ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠΊΡΠΈΠΏΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π΅ΡΡΡ.
ΠΠΎ ΡΡΡΠΈ ΡΡΠΎ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈ Π²ΡΠ·ΠΎΠ² CLI SAPI Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° -a.
option.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ PHP 8.1.0 ΠΏΡΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ readline Π²ΡΠ·ΠΎΠ² CLI SAPI
Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ -a Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ.