PEAR: Console_CommandLine #4 – 인자, 서브커맨드

2015-05-11

프로그램이 인자(Argument)를 받아들이기 위해서는 addArgument() 메소드를 이용해 인자에 대한 정보를 매개변수로 전달해야 합니다.

위 코드는 INPUTOUTPUT 인자를 받을 수 있도록 한 것입니다. 여기서 multiple은 해당 인자가 여러 개 올 수 있다는 것이고, optional은 생략이 가능하다는 의미입니다. 바꿔말해 INPUT 인자는 생략하거나 여러개를 쓸 수 있고, OUTPUT은 반드시 하나만 입력해야 한다는 것입니다.

도움말을 통해 이를 다시 확인 해보면 생략 가능하다는 의미로 대괄호로 INPUT을 감싸고 있고, 여러개 사용이 가능하다는 의미로 뒤에 숫자를 붙인 후 말줄임표를 뒤에 덧붙입니다.

서브커맨드(Subcommand)는 git처럼 프로그램 실행시 사용 할 수 있는 보조적인 명령어입니다. 예를 들면 git clone ... 같은 명령어에서 clone 부분이 서브커맨드입니다. 서브커맨드가 옵션이나 인자와 다른 점은 서브커맨드 자체적인 옵션과 인자를 가질 수 있다는 것입니다. 바꿔말해 -a 옵션을 그냥 사용했을 때와 서브커맨드 뒤에 붙여서 사용 했을 때 동작이 서로 다르게 할 수 있습니다.

위 코드는 listremove 두개의 서브커맨드를 설정하고 있습니다. list-a 옵션을, remove-r 옵션을 가지고 있습니다.

위처럼 사용하는 것은 가능하지만, php ./example-11.php list -r은 에러를 냅니다.

어떤 서브커맨드를 사용했는지 확인하기 위해서는 Console_CommandLine_Result 인스턴스의 command_name 프로퍼티 값을 이용하면 됩니다. 또한, 서브커맨드에 사용된 옵션과 인자는 동일한 인스턴스의 command 프로퍼티를 이용합니다. command는 서브커맨드에 대한 Console_CommandLine_Result 인스턴스입니다.

다음 글에서는 사용자가 액션(Action)을 추가적으로 정의하는 방법에 대해 이야기 해보려고 합니다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다


*