글검색결과 [Zend Framework/6. Zend_Console_Getopt] : 4 개
- 2007/03/20 6.4. Zend_Console_Getopt의 설정
- 2007/03/20 6.3. 옵션 및 인수의 취득
- 2007/03/19 6.2. Getopt 규칙의 선언
- 2007/03/19 6.1. Getopt 소개
6.4. Zend_Console_Getopt의 설정
Zend Framework/6. Zend_Console_Getopt | 2007/03/20 23:57
6.4.1. 옵션 규칙들의 추가
addRules() 메소드를 사용하여, Zend_Console_Getopt 생성자에서 지정된 옵션들을 이외에 추가로 옵션의 규칙들을 지정할 수 있습니다. addRules()에 넘기는 인수는, 클래스 생성자의 첫번째 인수와 같습니다. 그것은 짧은 형식의 옵션 지정을 나타내는 문자열 또는 긴 형식의 옵션 지정을 나타내는 연관 배열이 됩니다. 옵션을 지정하는 구문의 상세한 것은, Getopt 규칙의 선언을 참조해 주십시오.
예제 6.7. addRules()의 사용법
<?php
$opts = new Zend_Console_Getopt('abp:');
$opts->addRules(
array(
'verbose|v' => 'Print verbose output'
)
);
?>
위의 예제는 생성자로 정의한 옵션들의 집합에 "-v"의 앨리어스(alias)를 가진 "--verbose" 옵션을 추가하는 것을 보여주고 있습니다. Zend_Console_Getopt의 동일한 인스턴스에서 짧은 형식의 옵션과 긴 형식의 옵션이 공존할 수 있는 것을 주의합시다.
6.4.2. 도움말 메세지의 추가
긴 형식의 옵션 규칙을 선언할 때 도움말 문자열을 지정하는 것뿐만 아니라, setHelp() 메소드를 사용하여 옵션 규칙들을 가진 도움말 문자열을 연관지을 수 있습니다. setHelp() 메소드의 인수는 연관 배열로, 키가 플래그명 값이 대응하는 도움말 문자열이 됩니다.
예제 6.8. setHelp()의 사용법
<?php
$opts = new Zend_Console_Getopt('abp:');
$opts->setHelp(
array(
'a' => '이 옵션은 사과를 선택합니다. 매개변수는 불필요합니다',
'b' => '이 옵션은 바나나를 선택합니다. 정수 매개변수가 필수입니다',
'p' => '이 옵션은 배를 선택합니다. 옵션으로 문자열 매개변수를 지정합니다'
)
);
?>
앨리어스(alias)를 가진 옵션을 선언했을 때, 연관 배열의 키로써 어떤 앨리어스(alias)라도 사용할 수 있습니다.
짧은 구문으로 옵션을 선언했을 경우, setHelp() 메소드가 도움말 문자열을 설정하기 위한 유일한 수단이 됩니다.
6.4.3. 옵션 앨리어스(alias) 추가
setAliases 메소드를 사용하여 옵션의 앨리어스(alias)를 선언할 수 있습니다. 인수는 연관 배열로, 키는 방금 전에 선언한 플래그 문자열이고, 값은 그 플래그의 새로운 앨리어스(alias)입니다. 이들 앨리어스(alias)는 기존의 앨리어스(alias)들과 병합됩니다. 바꾸어 말하면, 이전에 선언했던 앨리어스(alias)도 여전히 유효하다는 것입니다.
앨리어스(alias)는 한 번 밖에 선언할 수 없습니다. 기존의 앨리어스(alias)를 재정의하려고 하면, Zend_Console_Getopt_Exception이 발생합니다.
예제 6.9. setAliases() 의 사용법
<?php
$opts = new Zend_Console_Getopt('abp:');
$opts->setAliases(
array(
'a' => 'apple',
'a' => 'apfel',
'p' => 'pear'
)
);
?>
위의 예에서는, 이들 앨리어스(alias)를 선언한 후, "-a"를 "--apple" 및 "--apfel"로 서로에게 앨리어스(alias) 설정을 한 것입니다. "-p"와 "--pear"로 서로에게 앨리어스(alias) 설정을 하고 있습니다.
짧은 구문으로 옵션을 선언했을 경우, setAliases() 메소드가 앨리어스(alias)를 정의하는 유일한 방법입니다.
6.4.4. 인수 리스트의 추가
기본값에 의해, Zend_Console_Getopt는 $_SERVER['argv']의 배열을 사용해 명령행 인수를 구문 분석 합니다. 또한 생성자의 두번째의 인수로서 인수를 포함한 다른 배열을 지정할 수도 있습니다. 마지막으로 addArguments() 메소드를 사용해서 기존에 사용하던 인수에 또다른 인수를 추가하거나, setArguments() 메소드를 사용해서 현재 인수의 배열을 대체할 수도 있습니다.
예제 6.10. addArguments() 및 setArguments()의 사용법
// 기본값에 의해, 생성자는 $_SERVER['argv']를 사용합니다
$opts = new Zend_Console_Getopt('abp:');
// 기존의 인수에 배열을 추가합니다.
$opts->addArguments(array('-a', '-p', 'p_parameter', 'non_option_arg'));
// 새로운 배열로 기존의 인수를 설정합니다
$opts->setArguments(array('-a', '-p', 'p_parameter', 'non_option_arg'));
?>
6.4.5. 설정의 추가
Zend_Console_Getopt 생성자의 세번째 인수는 설정 옵션의 배열입니다. 반환되는 객체 인스턴스의 행동을 설정하는 것입니다. 또한, setOptions() 메소드를 사용해서 설정 옵션들을 지정할 수 있습니다. 또는 setOption() 메소드를 사용해서 개별 옵션을 설정할 수도 있습니다.
"옵션"이라고 하는 용어에 대해 여기서 말하는 "옵션"은, 다른 경우에 사용되는 전문용어와 부합되는, Zend_Console_Getopt 클래스의 설정을 위해 사용되는 것을 가리키고 있습니다. 이 용어는 Zend_Console_Getopt 클래스에 의해 구문 분석되는 명령행 옵션과 동일한 의미가 아닙니다.
현재 지원하고 있는 옵션은 클래스에서 상수로 정의되고 있습니다. 옵션과 거기에 대응하는 상수 식별자(괄호 내의 문자 값을 포함해서)를 아래에서 설명합니다.
Zend_Console_Getopt::CONFIG_DASHDASH("dashDash")를 true로 하면, 플래그의 종료를 나타내는 특수 플래그 "--"를 유효하게 합니다. 이중 대시의 뒤에 이어지는 명령행 인수는, 비록 인수가 대시로 시작하지만, 옵션으로써 해석되지 않습니다. 이 설정 옵션의 기본값은 true입니다.
Zend_Console_Getopt::CONFIG_IGNORECASE("ignoreCase")를 true로 하면, 대문자 소문자만 다를 경우에, 플래그를 서로 앨리어스(alias)로서 취급합니다. 즉 ,"-a"와 "-A"는 동일한 플래그로 간주합니다. 이 설정 옵션의 기본값은 false입니다.
Zend_Console_Getopt::CONFIG_RULEMODE("ruleMode")는 Zend_Console_Getopt::MODE_ZEND("zend") 또는 Zend_Console_Getopt::MODE_GNU("gnu") 값을 가집니다. 특별한 구문 형식을 가진 클래스를 확장하는 것이 아니면, 이 옵션을 사용할 필요는 없습니다. 기본 Zend_Console_Getopt 클래스에서 지원되는 두 가지 방식은 명백합니다. 문자열을 지정하면 클래스는 MODE_GNU, 그 이외의 경우는 MODE_ZEND로 간주합니다. 만약 클래스를 확장해 다른 구문 형식을 추가한다면, 이 옵션을 사용해서 그 방식을 지정할 필요가 있습니다.
앞으로, 보다 더 많은 설정 옵션이 이 클래스에 추가될 예정입니다.
setOption() 메소드에 넘겨주는 두 가지 인수는 설정 옵션명과 그 옵션값입니다.
예제 6.11. setOption()의 사용법
<?php
$opts = new Zend_Console_Getopt('abp:');
$opts->setOption('ignoreCase', true);
?>
setOptions() 메소드에 넘겨주는 인수는 연관 배열입니다. 이 배열의 키는 설정 옵션명이고, 값은 설정값이 됩니다. 또한, 이것은 클래스 생성자에서 사용되는 배열 형식입니다. 지정한 설정값이 기존의 설정과 합쳐지므로, 모든 옵션을 지정할 필요는 없습니다.
예제 6.12. setOptions()의 사용법
<?php
$opts = new Zend_Console_Getopt('abp:');
$opts->setOptions(
array(
'ignoreCase' => true,
'dashDash' => false
)
);
?>




