php-toolkit/pflag
는 PHP로 작성된 일반 명령줄 플래그(옵션 및 매개변수) 구문 분석 라이브러리입니다. php-toolkit/pflag
是一个PHP编写的,通用的命令行标志(选项和参数)解析库。
Github 仓库: php-toolkit/pflag(https://github.com/php-toolkit/pflag)
功能说明
- 通用的命令行选项和参数解析器
- 支持设置值数据类型(
int,string,bool,array
),将自动格式化输入值 - 支持为选项/参数设置默认值
- 支持为一个选项设置多个短名称
- 支持从环境变量读取标志值
- 支持设置选项/参数为必须的(
required
) - 支持设置验证器以检查输入值
- 支持自动渲染漂亮的帮助信息。
命令行选项:
- 选项以
-
或者--
开头的,且首字符必须是字母 - 以
--
开头的为长选项. eg:--long
--long value
- 以
-
开头的为短选项-s -a value
- 支持定义数组选项
- eg:
--tag php --tag go
将会得到$tag = [php, go]
- eg:
命令行参数:
- 不能满足选项的都认作参数
- 支持绑定命名参数
- 支持定义数组参数
安装
composer 安装
composer require toolkit/pflag
Flags 使用
Flags - 是一个命令行标志(选项和参数)解析器和管理器。
示例代码请参见 example/이 PHP 명령줄 옵션 구문 분석 라이브러리(pflag)에 대해 알고 계십니까?.php
创建解析器
创建和初始化解析器
use Toolkit\PFlag\Flags;require dirname(__DIR__) . '/test/bootstrap.php';$flags = $_SERVER['argv'];// NOTICE: must shift first element.$scriptFile = array_shift($flags);$fs = Flags::new();// (可选的)可以添加一些自定义设置$fs->setScriptFile($scriptFile);/** @see Flags::$settings */$fs->setSettings([ 'descNlOnOptLen' => 26]);// ...
定义选项
定义选项 - 定义好支持的选项设置,解析时将会根据定义来解析输入
添加选项定义的示例:
use Toolkit\PFlag\Flag\Option;use Toolkit\PFlag\FlagType;use Toolkit\PFlag\Validator\EnumValidator;// add options// - quick add$fs->addOpt('age', 'a', 'this is a int option', FlagType::INT);// - 使用字符串规则快速添加选项定义$fs->addOptByRule('name,n', 'string;this is a string option;true');// -- 一次添加多个选项$fs->addOptsByRules([ 'tag,t' => 'strings;array option, allow set multi times', 'f' => 'bool;this is an bool option',]);// - 使用数组定义/** @see Flags::DEFINE_ITEM for array rule */$fs->addOptByRule('name-is-very-lang', [ 'type' => FlagType::STRING, 'desc' => 'option name is to lang, desc will print on newline', 'shorts' => ['d','e','f'], // TIP: add validator limit input value. 'validator' => EnumValidator::new(['one', 'two', 'three']),]);// - 使用 Option 对象$opt = Option::new('str1', "this is string option, \ndesc has multi line, \nhaha...");$opt->setDefault('defVal');$fs->addOption($opt);
定义参数
定义参数 - 定义好支持的选项设置,解析时将会根据定义来解析输入
添加参数定义的示例:
use Toolkit\PFlag\Flag\Argument;use Toolkit\PFlag\FlagType;// add arguments// - quick add$fs->addArg('strArg1', 'the is string arg and is required', 'string', true);// - 使用字符串规则快速添加定义$fs->addArgByRule('intArg2', 'int;this is a int arg and with default value;no;89');// - 使用 Argument 对象$arg = Argument::new('arrArg');// OR $arg->setType(FlagType::ARRAY);$arg->setType(FlagType::STRINGS);$arg->setDesc("this is an array arg,\n allow multi value,\n must define at last");$fs->addArgument($arg);
解析命令行输入
最后调用 parse()
解析命令行输入数据
// ...if (!$fs->parse($flags)) { // on render help return;}vdump($fs->getOpts(), $fs->getArgs());
显示帮助
当输入 -h
或 --help
会自动渲染帮助信息。
$ php example/이 PHP 명령줄 옵션 구문 분석 라이브러리(pflag)에 대해 알고 계십니까?.php --help
Output:
运行示例:
$ php example/이 PHP 명령줄 옵션 구문 분석 라이브러리(pflag)에 대해 알고 계십니까?.php --name inhere --age 99 --tag go -t php -t java -d one -f arg0 80 arr0 arr1
输出结果:
# 选项数据array(6) { ["str1"]=> string(6) "defVal" ["name"]=> string(6) "inhere" ["age"]=> int(99) ["tag"]=> array(3) { [0]=> string(2) "go" [1]=> string(3) "php" [2]=> string(4) "java" } ["name-is-very-lang"]=> string(3) "one" ["f"]=> bool(true)}# 参数数据 array(3) { [0]=> string(4) "arg0" [1]=> int(80) [2]=> array(2) { [0]=> string(4) "arr0" [1]=> string(4) "arr1" }}
获取输入值
获取flag值很简单,使用方法 getOpt(string $name)
getArg($nameOrIndex)
即可.
TIP: 将通过定义的数据类型自动格式化输入值
选项数据
$force = $fs->getOpt('f'); // bool(true)$age = $fs->getOpt('age'); // int(99)$name = $fs->getOpt('name'); // string(inhere)$tags = $fs->getOpt('tags'); // array{"php", "go", "java"}
参数数据
$arg0 = $fs->getArg(0); // string(arg0)// get an array arg$arrArg = $fs->getArg(1); // array{"arr0", "arr1"}// get value by name$arrArg = $fs->getArg('arrArg'); // array{"arr0", "arr1"}
扩展:规则定义
选项参数规则。使用规则可以快速定义一个选项或参数。【推荐:PHP视频教程】
- string 字符串规则以分号
;
分割每个部分 (完整规则:type;desc;required;default;shorts
). - array 规则按
SFlags::DEFINE_ITEM
设置定义 - 支持的类型常量请看
FlagType::*
use Toolkit\PFlag\FlagType;$rules = [ // v: 只有值,作为名称并使用默认类型 FlagType::STRING // k-v: 键是名称,值可以是字符串|数组 'long,s', // name => rule 'long,a,b' => 'int;an int option', // long is option name, a and b is shorts. 'f' => FlagType::BOOL, 'str1' => ['type' => 'int', 'desc' => 'an string option'], 'tags' => 'array; an array option', // can also: ints, strings 'name' => 'type;the description message;required;default', // with desc, default, required]
对于选项
- 选项允许设置短名称
shorts
TIP: 例如
long,a,b
-long
是选项名称. 剩余的a,b
都是它的短选项名.
对于参数
- 参数没有别名或者短名称
- 数组参数只允许定义在最后
数组定义项
常量 Flags::DEFINE_ITEM
Github 저장소: php-toolkit/pflag(https://github.com/php-toolkit/pflag)
기능 설명
- 공통 명령줄 옵션 및 매개변수 파서
- 입력 값의 형식을 자동으로 지정하는 설정 값 데이터 유형(
int, string, bool, array
) 지원 - 옵션으로 지원/ 매개변수 기본값 설정
- 옵션에 대한 여러 짧은 이름 설정 지원
- 환경 변수에서 플래그 값 읽기 지원
- 필요에 따라 옵션/매개변수 설정 지원(필수)
- 입력 값을 확인하기 위한 유효성 검사기 설정 지원
- 아름다운 도움말 정보의 자동 렌더링을 지원합니다.
명령줄 옵션:
-
-
또는 --
로 시작하는 옵션, 그리고 첫 번째 문자는 문자여야 합니다.
-
--
로 시작하는 문자는 긴 옵션입니다. 예: --long
--long value
-
-
로 시작하는 것은 짧은 옵션 -s -a value
- 배열 옵션 정의 지원
예: --tag php --tag go
는 $tag = [php, go]
를 얻습니다.
명령줄 매개변수:
-
또는 --
로 시작하는 옵션, 그리고 첫 번째 문자는 문자여야 합니다.--
로 시작하는 문자는 긴 옵션입니다. 예: --long
--long value
-
로 시작하는 것은 짧은 옵션 -s -a value
- 예:
--tag php --tag go
는 $tag = [php, go]
를 얻습니다.- 옵션을 충족하지 않는 모든 항목은 매개변수로 인식됩니다.
- 이름이 지정된 매개변수 바인딩 지원 지원됨 배열 매개변수 정의
Installation
composer 설치
public const DEFINE_ITEM = [ 'name' => '', 'desc' => '', 'type' => FlagType::STRING, 'helpType' => '', // use for render help // 'index' => 0, // only for argument 'required' => false, 'default' => null, 'shorts' => [], // only for option // value validator 'validator' => null, // 'category' => null];🎜🎜Flags 사용 🎜🎜Flags - 명령줄 플래그(옵션 및 인수)입니다. ) 파서 및 관리자. 🎜
🎜샘플 코드는 example/이 PHP 명령줄 옵션 구문 분석 라이브러리(pflag)에 대해 알고 계십니까?.php를 참조하세요🎜🎜🎜🎜파서 만들기🎜🎜파서 만들기 및 초기화🎜
// -------------------- 选项解析设置 -------------------- /** * Stop parse option on found first argument. * * - Useful for support multi commands. eg: `top --opt ... sub --opt ...` * * @var bool */ protected $stopOnFistArg = true; /** * Skip on found undefined option. * * - FALSE will throw FlagException error. * - TRUE will skip it and collect as raw arg, then continue parse next. * * @var bool */ protected $skipOnUndefined = false; // -------------------- 参数解析设置 -------------------- /** * Whether auto bind remaining args after option parsed * * @var bool */ protected $autoBindArgs = true; /** * Strict match args number. * if exist unbind args, will throw FlagException * * @var bool */ protected $strictMatchArgs = false;🎜🎜🎜옵션 정의🎜🎜옵션 정의 - 잘 지원되는 옵션 정의 설정을 사용하면 구문 분석 중 정의에 따라 입력이 구문 분석됩니다🎜🎜옵션 정의 추가 예:🎜
// -------------------- settings for built-in render help -------------------- /** * 自动渲染帮助信息当输入 '-h', '--help' 选项时 * * @var bool */ protected $autoRenderHelp = true; /** * 在渲染的帮助信息上显示数据类型 * * if False: * * -o, --opt Option desc * * if True: * * -o, --opt STRING Option desc * * @var bool */ protected $showTypeOnHelp = true; /** * 将在打印帮助消息之前调用它 * * @var callable */ private $beforePrintHelp;🎜🎜🎜매개 변수 정의🎜🎜매개 변수 정의 - 지원되는 옵션 설정을 정의하면 구문 분석 중 정의에 따라 입력이 구문 분석됩니다. 🎜🎜 매개변수 정의 추가 예: 🎜
$fs->setHelpRenderer(function (\Toolkit\PFlag\FlagsParser $fs) { // render help messages});🎜🎜🎜명령줄 입력 구문 분석🎜🎜마지막으로
parse()
를 호출하여 명령줄 입력 데이터를 구문 분석합니다.🎜phpunit --debug🎜도움말 표시🎜 🎜
-h
또는 --help
를 입력하면 자동으로 도움말 정보가 렌더링됩니다. 🎜phpdbg -qrr $(which phpunit) --coverage-text🎜출력:🎜🎜
%EC%97%90%20%EB%8C%80%ED%95%B4%20%EC%95%8C%EA%B3%A0%20%EA%B3%84%EC%8B%AD%EB%8B%88%EA%B9%8C?.png?raw=true?x-oss-process=image/resize,p_40)
getOpt( string $name)
getArg($nameOrIndex)
그게 전부입니다.🎜🎜TIP: 입력 값은 정의된 데이터 유형을 통해 자동으로 형식화됩니다🎜🎜옵션 데이터🎜rrreee🎜매개변수 데이터🎜rrreee🎜🎜🎜🎜확장: 규칙 정의🎜🎜옵션 매개변수 규칙. 규칙을 사용하여 옵션이나 매개변수를 빠르게 정의하세요. [권장: PHP 동영상 튜토리얼]🎜
- string 문자열 규칙은 각 부분을 세미콜론
;
로 구분합니다(전체 규칙:type;desc;required;default;shorts
). - 배열 규칙
SFlags::DEFINE_ITEM
에 따라 설정됩니다. - 지원되는 유형 상수는
FlagType::*
- 옵션에서는 짧은 이름
shorts
🎜팁을 설정할 수 있습니다. 예:🎜매개변수의 경우 🎜long, a, b
-long
은 옵션 이름입니다. 나머지a,b
는 짧은 옵션 이름입니다. 🎜
- 매개변수에는 별칭이나 짧은 이름이 없습니다.
- 배열 매개변수는 마지막에만 정의할 수 있습니다.
플래그::DEFINE_ITEM
:🎜rrreee🎜🎜🎜🎜사용자 정의 설정🎜🎜🎜🎜구문 분석 설정🎜rrreee🎜🎜🎜렌더링 도움말 설정🎜🎜렌더 도움말에 대한 일부 설정 지원 🎜rrreee🎜맞춤형 도움말 메시지 렌더링:🎜$fs->setHelpRenderer(function (\Toolkit\PFlag\FlagsParser $fs) { // render help messages});
单元测试
phpunit --debug
test with coverage:
phpdbg -qrr $(which phpunit) --coverage-text
使用pflag的项目
Check out these projects, which use github.com/php-toolkit/pflag :
- inhere/console Full-featured php command line application library.
- kite Kite is a tool for help development.
- More, please see Packagist
Github 仓库: php-toolkit/pflag(https://github.com/php-toolkit/pflag)
위 내용은 이 PHP 명령줄 옵션 구문 분석 라이브러리(pflag)에 대해 알고 계십니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

PHP와 Python은 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1.PHP는 간단한 구문과 높은 실행 효율로 웹 개발에 적합합니다. 2. Python은 간결한 구문 및 풍부한 라이브러리를 갖춘 데이터 과학 및 기계 학습에 적합합니다.

PHP는 죽지 않고 끊임없이 적응하고 진화합니다. 1) PHP는 1994 년부터 새로운 기술 트렌드에 적응하기 위해 여러 버전 반복을 겪었습니다. 2) 현재 전자 상거래, 컨텐츠 관리 시스템 및 기타 분야에서 널리 사용됩니다. 3) PHP8은 성능과 현대화를 개선하기 위해 JIT 컴파일러 및 기타 기능을 소개합니다. 4) Opcache를 사용하고 PSR-12 표준을 따라 성능 및 코드 품질을 최적화하십시오.

PHP의 미래는 새로운 기술 트렌드에 적응하고 혁신적인 기능을 도입함으로써 달성 될 것입니다. 1) 클라우드 컴퓨팅, 컨테이너화 및 마이크로 서비스 아키텍처에 적응, Docker 및 Kubernetes 지원; 2) 성능 및 데이터 처리 효율을 향상시키기 위해 JIT 컴파일러 및 열거 유형을 도입합니다. 3) 지속적으로 성능을 최적화하고 모범 사례를 홍보합니다.

PHP에서, 특성은 방법 재사용이 필요하지만 상속에 적합하지 않은 상황에 적합합니다. 1) 특성은 클래스에서 다중 상속의 복잡성을 피할 수 있도록 수많은 방법을 허용합니다. 2) 특성을 사용할 때는 대안과 키워드를 통해 해결할 수있는 방법 충돌에주의를 기울여야합니다. 3) 성능을 최적화하고 코드 유지 보수성을 향상시키기 위해 특성을 과도하게 사용해야하며 단일 책임을 유지해야합니다.

의존성 주입 컨테이너 (DIC)는 PHP 프로젝트에 사용하기위한 객체 종속성을 관리하고 제공하는 도구입니다. DIC의 주요 이점에는 다음이 포함됩니다. 1. 디커플링, 구성 요소 독립적 인 코드는 유지 관리 및 테스트가 쉽습니다. 2. 유연성, 의존성을 교체 또는 수정하기 쉽습니다. 3. 테스트 가능성, 단위 테스트를 위해 모의 객체를 주입하기에 편리합니다.

SplfixedArray는 PHP의 고정 크기 배열로, 고성능 및 메모리 사용이 필요한 시나리오에 적합합니다. 1) 동적 조정으로 인한 오버 헤드를 피하기 위해 생성 할 때 크기를 지정해야합니다. 2) C 언어 배열을 기반으로 메모리 및 빠른 액세스 속도를 직접 작동합니다. 3) 대규모 데이터 처리 및 메모리에 민감한 환경에 적합하지만 크기가 고정되어 있으므로주의해서 사용해야합니다.

PHP는 $ \ _ 파일 변수를 통해 파일 업로드를 처리합니다. 보안을 보장하는 방법에는 다음이 포함됩니다. 1. 오류 확인 확인, 2. 파일 유형 및 크기 확인, 3 파일 덮어 쓰기 방지, 4. 파일을 영구 저장소 위치로 이동하십시오.

JavaScript에서는 NullCoalescingOperator (??) 및 NullCoalescingAssignmentOperator (?? =)를 사용할 수 있습니다. 1. 2. ??= 변수를 오른쪽 피연산자의 값에 할당하지만 변수가 무효 또는 정의되지 않은 경우에만. 이 연산자는 코드 로직을 단순화하고 가독성과 성능을 향상시킵니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Dreamweaver Mac版
시각적 웹 개발 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기
