我通常使用argparse module in Python來檢測選項/參數,打印用法等。我試圖從本機代碼或使用一些輕量級庫/框架沒有寫很多包裝線。如何獲得PHP中的getop()的高級用法,如python argparse
從我的研究,我只是發現getop()'s native PHP implementation,那是相當的喜歡getop()'s C implementation和非常有限的某些用途(不包括期權,期權的前綴,參數衝突處理,選擇,metavars等)的框架。我想找到一種簡單的方法在PHP中獲得相同的結果,而不使用原始的argv
,reinventing the wheel或實現用於getop()的「yet another improved library」來解析參數。
這是例子看起來如何在Python:
from argparse import ArgumentParser, ONE_OR_MORE, ArgumentDefaultsHelpFormatter
__version__ = '3.14'
description = 'some description'
parser = ArgumentParser(
prog = 'someprogram',
description = description,
epilog = None,
parents = [],
formatter_class = ArgumentDefaultsHelpFormatter,
prefix_chars = '-',
fromfile_prefix_chars = None,
argument_default = None,
conflict_handler = 'error',
add_help = True,
)
parser.add_argument('-o', '--output',
action = 'store',
metavar = '/path/to/output',
dest = 'output',
choices = None,
help = 'Set the output directory')
parser.add_argument('-q', '--quiet',
action = 'store_true',
dest = 'quiet',
default = False,
help = 'Don\'t print status messages to stdout')
parser.add_argument(option_strings = ['FILES'],
metavar = 'FILES',
nargs = ONE_OR_MORE,
type=str,
dest = 'FILES',
help = 'One or more files to process')
parser.add_argument('-v', '--version',
action ='version',
version ='%(prog)s {version}'.format(version = __version__),
help = 'Shows the program version')
args = parser.parse_args()
在PHP中可以翻譯相同的行爲,但你需要大量的線來完全模擬參數解析器像Python的。 PS:請不要把這個問題作爲python vs php,我可以是相同的紅寶石vs php,java vs php或其他。這只是關於如何使用本機庫以另一種不同的語言將代碼良好且高效地移植到其中。