Как работает интерактивная оболочка PHP?
Я нахожусь в интерактивной оболочке для PHP, используя команду php -a
в терминале, но команды не работают. Я даже пробую простой 2 * 2
, и я не получаю результатов.
что я делаю неправильно и как это работает?
5 ответов
On документация для интерактивной оболочки, первая записка Райана П. имеет некоторую заметную информацию:
интерактивная оболочка и интерактивный режим-это не одно и то же, несмотря на похожие имена и функциональность.
Если ты типа
php -a
и получить ответ "интерактивной оболочки" с последующимphp>
prompt, у вас есть интерактивная оболочка (PHP был скомпилирован с поддержкой readline). Если вместо этого вы получите ответ "Интерактивный режим включен", у вас нет интерактивной оболочки, и эта статья не относится к вам.
поэтому, если вы получаете только "интерактивный режим включен", то вы сможете ввести только PHP-код, а затем, когда вы закончите, отправьте PHP EOF для его выполнения.
Это, наверное, не то, что вы хотите. Вы можете посмотреть в phpsh.
как использовать интерактивную оболочку PHP
на php -a
ты говоришь о куске дерьма.
phpsh был сделан facebook.
установите git, перейдите туда, где вы хотите построить phpsh:
sudo apt-get install git
cd /home/youruser;
потяните репозиторий, cd в него и установите:
git clone https://github.com/facebook/phpsh
cd phpsh
sudo python setup.py install
запустить его:
el@apollo:~$ phpsh
Starting php
type 'h' or 'help' to see instructions & features
php>
назначить час в переменную и распечатать:
php> $t = date("H");
php> echo $t;
04
все любят если заявления:
php> if (false){echo "derp"; } else if(true){ echo "foobar"; } else{echo "moo"; }
foobar
получить длину строки:
php> echo strlen("012345678");
9
сортировка:
php> $numbers=array(4,6,2,22,11);
php> sort($numbers);
php> echo $numbers;
Array
php> print_r($numbers);
Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 11
[4] => 22
)
сортировка по ключам:
php> $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
php> ksort($age);
php> print_r($age);
Array
(
[Ben] => 37
[Joe] => 43
[Peter] => 35
)
Push значения в стек и выскочить их.
php> $a[]="one"
php> $a[]="two"
php> print_r($a);
Array
(
[0] => one
[1] => two
)
php> echo array_pop($a);
two
php> echo array_pop($a);
one
php> echo array_pop($a);
php>
Basename получает слово справа:
php> echo basename("http://foobar/helicase");
helicase
php> echo basename("/home/el/polymerase");
polymerase
коснитесь файла и получите последний раз, когда он был изменен:
php> touch("/home/el/myfile.txt");
php> echo filemtime("/home/el/myfile.txt");
1386494608
Люби меня немного json:
php> $myjson = '{"a":1}';
php> var_dump(json_decode($myjson));
object(stdClass)#2 (1) {
["a"]=>
int(1)
}
несколько способов захватить что-то изнутри в JSON:
php> $json = '{"foobar": 123}';
php> $obj = json_decode($json);
php> print $obj->foobar;
123
php> print $obj->{'foobar'};
123
функция, валидатор JSON
php> function isJson($string) {
... json_decode($string);
... return (json_last_error() == JSON_ERROR_NONE);
... }
php> echo isJson("");
1
php> echo isJson("{}");
1
php> echo isJson("abc");
php> echo isJson("{'a': 1}");
php> echo isJson('{"a": 1}');
1
у вас есть PHP 5.1.0, скомпилированный с --with-readline
?
начиная с PHP 5.1.0, CLI SAPI предоставляет интерактивную оболочку, используя - опция, если PHP скомпилирован с опцией --with-readline.
пример со страницы руководства PHP:
$ php-a
интерактивная оболочка
php > echo 5+8;
13
Подробнее: http://www.php.net/manual/en/features.commandline.interactive.php
вы используете print () или echo ()? Ваш пример 2*2 будет выполнен, но вы не увидите никаких доказательств этого, пока не скажете PHP сделать что-то с выходом, например print().
php -a
php > 2 * 2; #This doesn't return anything.
php > print (2 * 2);
4