저는 약 10 개의 인수를 취하는 함수가 있는데 대부분이 선택적입니다. 함수의 사용자가 매개 변수의 순서를 고수 할 필요가없는 방식으로 구현할 수 있는지 궁금합니다. 예를 들어 :PHP에서 임의의 순서로 여러 개의 인수 허용
이제public function foo($arg1, $arg2, $arg3='',$arg4='', $arg5='', $arg6='', $arg7=''){}
, 나는 내가 할 수있는이 기능을 사용하면 간단하게
$this->foo($arg1val, $arg2val, $arg6val);
그렇게 할 PHP에서 방법이 있나요?
여기에 구현 한 방법은 다음과 같습니다. API의 함수에서 허용하는 매개 변수를 나열 했으므로 사용자는 키 => 값 쌍인 배열에서 임의의 순서로 매개 변수를 전달할 수 있습니다. 예를 들어
:
public function argumentsFilter($origParams, $newParams){
$tmpArr = array();
foreach ($origParams as $origKey){
foreach($newParams as $newKey => $newVal){
if($newKey == $origKey){
$tmpArr[$origKey] = $newVal;
}
}
if(empty($tmpArr[$origKey])){
$tmpArr[$origKey] = '';
}
}
return $tmpArr;
}
public function foo($arg1, $arg2, $arg=array()){
$validArgList = array('arg3', 'arg4', 'arg5', 'arg6', 'arg7');
$correctedArgList = $this->argumentsFilter($validArgList, $arg);
}
이 작업을 수행하려면 더 우아한 방법이 있나요?
시도해 볼 수있는 [트릭] (http://blog.perplexedlabs.com/2009/04/22/php-named-parameters/)이 있지만 가장 적합한 방법은 IMO가 배열을 전달하는 것입니다. 일부 다른 언어 (예 : Python, C#)처럼 이름이 지정된 [매개 변수] (http://en.wikipedia.org/wiki/Named_parameter)에 대한 진정한 지원을 원한다면 [곧 ] (https://bugs.php.net/bug.php?id=22216) – NullUserException