On Jan 7, 2011, at 12:08 PM, Nicholas Kell wrote: > > On Jan 7, 2011, at 11:01 AM, Joshua Kehn wrote: > >> On Jan 7, 2011, at 11:55 AM, larry@xxxxxxxxxxxxxxxx wrote: >> >>> Hi folks. I have a project coming up that will involve writing a non-trivial command line PHP application. Most of it will be nice and abstracted and standalone and all of that jazz, but it will need to do command line interation. I'm not sure yet if it will be interactive or if I just need to parse lots of command line switches. >>> >>> Has anyone used a CLI-handling library they like? I recall briefly using the PEAR CLI library many many years ago and disliking it because it was only barely a step above the raw PHP-CLI SAPI, and still required lots of if-else branching in my code. I don't know if there's anything better since then, however. I prefer clean OO to procedural, but can work with procedural if needs be. The fewer dependencies it has the better as well. >>> >>> Any recommendations? >>> >>> (Open source, GPLv2-compatible required.) >>> >>> --Larry Garfield >> >> Larry- >> >> Why are you writing a command line application in PHP? I would think that is starting off on a very wrong foot. >> >> Can you explain the requirements / use cases a bit more? >> > > I agree. Not saying that it isn't doable, because it certainly is, but there may be other languages that are available and easier to implement a CLI app, such as Python, or some other QnD scripting language. Pardon me but what's the big deal? Put a shebang up top and then add: // // ---------------------------------------------------------- // Get CLI args from argv // ---------------------------------------------------------- // function getargs($argv) { // ./cli.php file1 file2 --path=/foo/bar -t -B quux // getargs($GLOBALS['argv']) $args['self'] = array_shift( $argv ) ; while( 0 < sizeof( $argv ) ) { $arg = array_shift( $argv ) ; if( '--' == substr( $arg , 0 , 2 ) ) { $eq = strpos( $arg , '=' ) ; $name = substr( $arg , 2 , $eq - 2 ) ; $val = substr( $arg , $eq + 1 ) ; $args[$name][] = $val ; } else if( '-' == $arg[0] ) { $name = substr( $arg , 1 ) ; if (isset($argv[0][0]) && ( '-' != $argv[0][0] )) { $val = array_shift( $argv ) ; } else { $val = '' ; } $args[$name][] = $val ; } else { $args['file'][] = substr( $arg , 0 ) ; } } return $args ; } // ---------------------------------------------------------- // Main // ---------------------------------------------------------- //Get CLI options $args = getargs($GLOBALS['argv']); //Display Basic Help if (isset($args['h']) || isset($args['help'])) { echo "./your_php_cli_app.php -h ....\n"; echo " -h - displays this help\n"; echo " ... is more of your command line args\n"; echo "\n"; exit; } -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php