nasıl bir komut satırı interaktif php script yazabilirim?

8 Cevap php

Ben komut satırından kullanabileceğiniz bir php komut dosyası yazmak istiyorum. Ben istemi ve birkaç öğe için giriş kabul, ve sonra bazı sonuçlar tükürmek istiyorum. Ben bütün sınıfları ve kütüphaneler php olduğu için, php bunu yapmak istiyorum, ve ben sadece bir kaç şey için basit bir komut satırı arayüzü yapmak istiyorum.

Isteyen ve tekrarlanan komut satırı girişleri kabul beni açma oluyor parçasıdır. Bunu nasıl yaparsınız?

8 Cevap

Dan PHP: Read from Keyboard – Get User Input from Keyboard Console by Typing:

php://stdin , standart girdi açılımı: Eğer özel bir dosya lazım.

print "Type your message. Type '.' on a line by itself when you're done.\n";

$fp = fopen('php://stdin', 'r');
$last_line = false;
$message = '';
while (!$last_line) {
    $next_line = fgets($fp, 1024); // read the special file to get the user input from keyboard
    if (".\n" == $next_line) {
      $last_line = true;
    } else {
      $message .= $next_line;
    }
}

PHP manuel I/O Streams sayfası komut satırından bir satır okumak için STDIN nasıl kullanabileceğinizi açıklar:

<?php
 $line = trim(fgets(STDIN)); // reads one line from STDIN
 fscanf(STDIN, "%d\n", $number); // reads number from STDIN
?>

PHP.net bir örnek bulundu: http://www.php.net/manual/fr/features.commandline.php#94924

$handle = fopen ("php://stdin","r");
$line = fgets($handle);
if(trim($line) != 'yes') {
...

Algoritma basittir:

until done:
    display prompt
    line := read a command line of input
    handle line

Onları işlemek çağrı işlevleri için komutları eşleyen bir Array () kullanmak çok önemsiz bulunuyor. Tüm zorluk kabaca bir süre döngü, ve iki fonksiyon PHP bir readline interface daha gelişmiş kabuk uygulamalar için vardır, çağırır.

Ben senin girişi olabilir ne kadar karmaşık emin değilim, ama readline interaktif CLI programları için işlemek için mükemmel bir yoldur.

Sen aynı yaratık gibi komut geçmişi gibi, kabuk beklene bunun dışında konfor olsun.

: Bunu kullanarak kadar basittir

$command = readline("Enter Command: ");
/* Then add the input to the command history */
readline_add_history($command);

Varsa, bu gerçekten basit hale geliyor.

Bir satır kod (satır 2):

<?php
$name = trim(shell_exec("read -p 'Enter your name: ' name\necho \$name"));
echo "Hello $name this is PHP speaking\n";
exit;

http://oneqonea.blogspot.com/2012/04/how-can-i-capture-user-input-from-cmd.html bu cevabınız kaynağını Ödeme

Basit:

#!/usr/bin/php
<?php
define('CONFIRMED_NO', 1);

while (1) {
    fputs(STDOUT, "\n"."***WARNING***: This action causes permanent data deletion.\nAre you sure you're not going to wine about it later? [y,n]: ");

    $response = strtolower(trim(fgets(STDIN)));
    if( $response == 'y' ) {
        break;
    } elseif( $response == 'n' ) {
        echo "\n",'So I guess you changed your mind eh?', "\n";
        exit (CONFIRMED_NO);
    } else {
        echo "\n", "Dude, that's not an option you idiot. Let's try this again.", "\n";
        continue;
    }
}

echo "\n","You're very brave. Let's continue with what we wanted to do.", "\n\n";