zoukankan      html  css  js  c++  java
  • 用php实现交互式工具——How do I write a command-line interactive PHP script?

    I want to write a PHP script that I can use from the command line. I want it to prompt and accept input for a few items, and then spit out some results. I want to do this in PHP, because all my classes and libraries are in PHP, and I just want to make a simple command line interface to a few things.

    The prompting and accepting repeated command line inputs is the part that's tripping me up. How do I do this?

    参考:https://stackoverflow.com/questions/2929629/how-do-i-write-a-command-line-interactive-php-script

    1. readline实现

    <?php
    do {
      $cmd = trim(strtolower( readline("
    > Command: ") ));
      readline_add_history($cmd);
      switch ($cmd) {
        case 'hello': print "
     -- HELLO!
    "; break;
        case 'bye': break;
        default: print "
     -- You say '$cmd'... say 'bye' or 'hello'.
    ";
      }
    } while ($cmd!='bye');

     另外一种实现方式:

    2. fgets实现

     #!/usr/bin/php
     <?php
     define('CONFIRMED_NO', 1);
     
     while (1) {
         fputs(STDOUT, "
    "."***WARNING***: This action causes permanent data deletion.
    Are 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 "
    ",'So I guess you changed your mind eh?', "
    ";
             exit (CONFIRMED_NO);
         } elseif( $response == 'hello' ){
             echo "
    ", "hello, world;
    ";
         }
          else {
             echo "
    ", "Dude, that's not an option you idiot. Let's try this again.", "
    ";
             continue;
         }
     }
     
     echo "
    ","You're very brave. Let's continue with what we wanted to do.", "
    
    ";
    

      test

    3. fopen php://stdin实现

    print "Type your message. Type '.' on a line by itself when you're done.
    ";
    
    $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 (".
    " == $next_line) {
          $last_line = true;
        } else {
          $message .= $next_line;
        }
    }
    

      

  • 相关阅读:
    动手动脑
    大道至简第七八章读后感
    super 的用法
    第六章
    课后作业
    大道至简第五章读后感
    课后作业
    大道至简第四章读后感
    大道至简——第六章
    Java数组课后作业
  • 原文地址:https://www.cnblogs.com/oxspirt/p/10194531.html
Copyright © 2011-2022 走看看