Re:Build command line apps using PHP 7
by terminalcommand on Sunday September 03, 2017 @06:19PM
(#15164283)
I haven't used PHP for CLI scripting, however I've used Python and Golang. I can say that Golang argument library (flag) feels more straightforward to me than Python's argparse.
import "flag"
var ip = flag.Int("flagname", 1234, "help message for flagname")
...
// flag.Parse() once in the main function
vs import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number",
type=int)
...
args = parser.parse_args()
In the Go example you get a pointer just like in C, in the python example you get a special object and can access its fields. Both are simple, but Golang is IMHO closer to C in this matter.PHP and C have getopt in their standard library which work mostly the same way.
flag package bothers me because it breaks getopt conventions for no good reason.
Re:Build command line apps using PHP 7
by combatentropy on Sunday September 03, 2017 @07:08PM
(#15164501)
> . . . argument parsing . . .
> Node has none.
https://nodejs.org/docs/latest/api/process.html#process_proc...> https://nodejs.org/docs/latest/api/process.html#process_proc....
This is not argument parsing. I'm pretty sure Node doesn't even do anything, it just gets an array of strings from the CLI, argv C style isn't getting options prefixed with - or -- directly from the CLI, and putting them in a map or something. So no, node has no facility in its standard library for that. Node is not known for its extensive standard library in anyway.
Vanilla PHP has better argument parsing than many recent hipster language. Go has some sort of ugly non conventional argument library which is barely usable, Node has none. But nothing beats vanilla Python for that tasks IMHO.