私は通常、Python で argparse モジュールを使用して、オプション/パラメーター、印刷の使用法などを検出します。多くの折り返し行を書かずに、ネイティブ コードから、またはいくつかの軽量ライブラリ/フレームワークを使用して、PHP で同じ結果を得ようとしています。
私の調査から、getop() のネイティブ PHP 実装を見つけました。これはgetop() の C 実装に非常に似ており、特定の用途 (排他的オプション、プレフィックス オプション、パラメーター競合ハンドラー、選択肢) のフレームワークとして非常に制限されています。 、メタバーなど)。rawargv
を使用せずに PHP で同じ結果を得るための簡単な方法を見つけたいと思います。
argparse
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 対 php と解釈しないでください。私は同じ ruby 対 php、java 対 php などになる可能性があります。それは、ネイティブ ライブラリを使用して別の異なる言語でコードを適切かつ効率的に移植する方法についてです。