[php] PHP에서 선택적 인수를 어떻게 작성합니까?

PHP 매뉴얼에서 선택적 매개 변수가있는 함수의 구문을 표시하기 위해 각 종속 선택적 매개 변수 세트 주위에 대괄호를 사용합니다. 예를 들어, date()기능의 경우 매뉴얼은 다음과 같이 읽습니다.

string date ( string $format [, int $timestamp = time() ] )

$timestamp선택적 매개 변수는 어디에 있으며, 비워두면 기본값은 time()함수의 리턴 값입니다.

PHP에서 커스텀 함수를 정의 할 때 이와 같은 선택적 매개 변수를 만드는 방법은 무엇입니까?



답변

매뉴얼과 마찬가지로 =매개 변수 정의에 등호 ( )를 사용 하십시오.

function dosomething($var1, $var2, $var3 = 'somevalue'){
    // Rest of function here...
}


답변

인수의 기본값은 상수 표현식이어야합니다. 변수 또는 함수 호출이 될 수 없습니다.

그러나이 기능이 필요한 경우 :

function foo($foo, $bar = false)
{
    if(!$bar)
    {
        $bar = $foo;
    }
}

$bar물론 부울이 아니라고 가정 합니다.


답변

나는 또한 유용하다고 생각한 몇 가지 메모 :

  • 기본값을 오른쪽에 유지하십시오.

    function whatever($var1, $var2, $var3="constant", $var4="another")
  • 인수의 기본값은 상수 표현식이어야합니다. 변수 또는 함수 호출이 될 수 없습니다.


답변

선택적 인수에 기본값을 지정하십시오.

function date ($format, $timestamp='') {
}


답변

날짜 함수는 다음과 같이 정의됩니다.

function date($format, $timestamp = null)
{
    if ($timestamp === null) {
        $timestamp = time();
    }

    // Format the timestamp according to $format
}

일반적으로 기본값은 다음과 같습니다.

function foo($required, $optional = 42)
{
    // This function can be passed one or more arguments
}

그러나 리터럴 만 유효한 기본 인수이므로 null첫 번째 예제에서는 기본 인수로 사용 하지 않고 $timestamp = time() null 검사와 결합했습니다. 리터럴에는 배열 ( array()또는 []), 부울, 숫자, 문자열 및가 포함됩니다 null.


답변

처리해야 할 속성 수를 모르는 경우 ...PHP 5.6에 도입 된 가변 인수 목록 토큰 ( )을 사용할 수 있습니다 ( 여기에서 전체 문서 참조 ).

통사론:

function <functionName> ([<type> ]...<$paramName>) {}

예를 들면 다음과 같습니다.

function someVariadricFunc(...$arguments) {
  foreach ($arguments as $arg) {
    // do some stuff with $arg...
  }
}

someVariadricFunc();           // an empty array going to be passed
someVariadricFunc('apple');    // provides a one-element array
someVariadricFunc('apple', 'pear', 'orange', 'banana');

보시다시피이 토큰은 기본적으로 모든 매개 변수를 배열로 변환하여 원하는 방식으로 처리 할 수 ​​있습니다.


답변