null 일 수있는 매개 변수를 가진 함수를 구성하는 가장 좋은 방법은 무엇입니까?PHP 함수 정의, Null 인수
function newDate($day, $overRide, $time = null) {
Do something with the variables
}
# newDate('12', 'yes');
null 일 수있는 매개 변수를 가진 함수를 구성하는 가장 좋은 방법은 무엇입니까?PHP 함수 정의, Null 인수
function newDate($day, $overRide, $time = null) {
Do something with the variables
}
# newDate('12', 'yes');
그것은 더 나은 .. 함수 선언의 끝에 default parameters
을 정의하는
중앙에 널 (NULL) 또는 기본 매개 변수를 가지고 호출 모양 :
newDate($someDay, null, $override);
그러나, 마지막에 기본 인수를 갖는 간단한 함수 호출 제공시
이newDate($someDay, $override); // null is passed for $time
문제는 null이 될 수있는 매개 변수가되지 않습니다 : 예
function newDate($day, $time = null, $overRide) {
Do something with the variables
}
# newDate('12', '', 'yes');
은 다음과 같이 간단하게 기능을 재구성하는 것입니다. 모든 매개 변수는 함수에 전달하여 null 일 수 있습니다. 이 문제의 원인은 기본값입니다. 기본값을 가진 매개 변수는 컴파일러가 고정 인수의 일부가되기 전에 오는 것으로 가정하는 것이 더 간단하기 때문에 끝에 있어야합니다.
나는 실제로 선택의 여지가 없다고 생각합니다.
기본 매개 변수는 함수의 마지막 매개 변수 여야합니다. 그렇지 않으면 newDate(1, 2)
으로 전화하면 으로 바뀌어 newDate(1, null, 2)
을 원했을 것입니다.
PHP의 documentation on function arguments을 참조하십시오.
윤곽을 그리는 것 (즉, 필수 인수 뒤에 선택적 args를 이동하는 것)은 인수의 '흐름'이 여전히 의미가있는 한 의미가 있습니다. (즉, 특정 순서로되어 있어야 감각을 갖출 필요가없는 경우에만 해당). 그러나 여전히 목표를 달성하는 가장 좋은 방법입니다. 잠재적으로 선택적 인수의 수가 많은 경우
말했다, 확인하기 위해 옵션 인수의 키 => 값 쌍을 포함됩니다 옵션 배열을 받아 들일 생각이있을 수 있습니다.)
(덧붙여, 첫 번째 예제에서, 당신은 정말 ''대신 null을 전달해야합니다.)
많은 선택적 인수를 가질 수 있습니다 기능에 대한 현재 가장 좋은 방법은, 회답의 지식을 배열을 사용하여 명명 된 인수를 가짜 쓰기.
function foo($options = array()) {
$options = array_merge(array(
'foo' => 'defaultFoo',
'bar' => 'defaultBar',
'fuz' => false,
'buz' => null,
), $options);
if ($options['fuz']) {
return $options['foo'];
}
return $options['foo'] . $options['bar'] . $options['buz'];
}
이 기능은 처음 쓰기에는 장황하지만 기능을 사용하고 확장하는 데는 매우 유용합니다. 이 접근법의 효과는 Symfony 1.4 프레임 워크에서의 광범위한 사용과 JQuery가 JavaScript 객체와 비슷한 방식으로 입증되었습니다.
array_merge 및 배열 조회로 인해 약간의 오버 헤드가 있습니다.
스타일의 문제가 아니지만 언어 지원 문제입니다. PHP는 인수 목록의 끝에 선택적 매개 변수 만 지원합니다. – pgb