답변:
인수의 기본값은 상수 표현식이어야합니다. 변수 또는 함수 호출이 될 수 없습니다.
그러나이 기능이 필요한 경우 :
function foo($foo, $bar = false)
{
if(!$bar)
{
$bar = $foo;
}
}
$bar
물론 부울이 아니라고 가정 합니다.
$bar === false
-이것이 $bar
기본값으로 설정 되었을 때 수행되어야하는 행동입니다 false
. 0
부울이 필요한 경우 가 아니라면 잘못된 조치 가 전달되지 않으므로 작동합니다. Kzqai가 말했듯 $bar = null
이 $ bar의 값이 부울 인 경우에도 사용할 수 있기 때문에 보다 일반적인 솔루션을 사용 하는 것이 좋습니다. 시험은 다음이된다 if (is_null($bar))
나 if ($bar === null)
.
날짜 함수는 다음과 같이 정의됩니다.
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');
보시다시피이 토큰은 기본적으로 모든 매개 변수를 배열로 변환하여 원하는 방식으로 처리 할 수 있습니다.
function dosomething($var1, $var2, $optionalValue = null)
이 더 나은 옵션을 찾았습니다.