0

선택적 매개 변수가있는 함수를 만들 때 가장 많이 전달 될 가능성이 높고 함수에서 매개 변수를 지정하는 순서를 결정해야합니다. 선언.배열을 사용하여 선택적 함수 매개 변수를보다 쉽게 ​​전달하는 방법

public function myFunc($mightBeEmptyA, $mightBeEmptyB, $mandatoryParam) 
{ 

} 

이 더 나은 연습이고,이 프로그램은 다음과 같은?

에 배열을 사용 할 더 나은 것 :

은 그리 절묘한 $ mandatoryParam로 아래의 기능을 가지고 매개 변수를 대신 전달하십시오. 배열의 매개 변수를 처리하는 데 필요한 추가 논리가 가치가 있습니까?

+1

아마도. 그것은 달려있다. 너무 많은 매개 변수를 전달하는 경우 먼저 함수/매개 변수를 단순화 할 수 있는지 여부를 조사해야합니다. – deceze

답변

0

예, 함수에 많은 인수가 필요한 경우 가능합니다. 예를 들어 특정 데이터를 필터링하고 많은 필터가있는 함수입니다.

나는 보통 이런 식으로 작업을 수행합니다

public function myFunc(array $args){ 

    $args += array(
    'mightBeEmptyA' => 'defaultVal', 
    // ... 
); 

    extract($args, EXTR_SKIP); 

    // and here I can use $mightBeEmptyA 
} 
0

당신은 func_get_args에서 기술적으로는 함수 자체 내에서 그것을 밖으로 정렬 할 수 있습니다 당신이 함수에 전달할 중요하지 않습니다 이런 식으로 보일 것입니다. 원하지 않으면 아무것도 전달할 필요가 없습니다.

public function myFunc() 
{ 
    if (func_num_args()) { 
     // has arguments 
     $arg_list = func_get_args(); 
     ... 
    } else { 
     // no arguments 
    } 
} 
0

당신은 기본 매개 변수

public function myFunc($mandatoryParam,$mightBeEmptyA="", $mightBeEmptyB="") 
{ 

} 

을 사용할 수 있습니다하지만 당신의 mightBeEmptyA 제공해서는 안 상황이있는 경우 만 mightBeEmptyB 당신이

myFunc("mandatory","","OptionalB"); 
를 다음과 같이 호출했다 provided.Then 할 필요가

상황에 따라 전화를 받으십시오.

관련 문제