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');
보시다시피이 토큰은 기본적으로 모든 매개 변수를 배열로 변환하여 원하는 방식으로 처리 할 수 있습니다.