나는 Callback
함수를 가지고 있는데, 두 번째 매개 변수는 Array
입니다.일부 변수의 부울 값에 따라 반환되는 값
public function foo ($something, $callback) {
/**
* function body
*/
$booleanOrArray = $this->bar();
if (is_callable ($callback)) {
return call_user_func ($callback, !is_array($booleanOrArray), $booleanOrArray || [ ]);
}
throw new Exception('A callback function must be defined.');
}
는 그래서, call_user_func
에, $booleanOrArray
라고 var에있다 : 그래서, 내가 좋아하는 뭔가가있다. 이것은 함수 bar
의 procces가 잘 수행되면 데이터가있는 Array
을 반환하고 그렇지 않으면 bar 함수가 false
을 반환하기 때문입니다. 그래서 bar
복귀 false
경우 callback
함수의 첫 번째 파라미터는 푸 false
를 반환 경우, Array
경우,이 PARAM false
가 될 것이며,이 오류이며, is_array($booleanOrArray)
의해 결정되므로된다.
는하지만, 내 응용 프로그램에서, 나는 다음과 같이 callback
함수를 정의하는 사용자에게 강제 :
$MyClass = new ClassInstance();
$MyClass->foo('firstParam', function ($error, Array $data) {
if (! $error) {
var_dump($data);
}
else {
print 'Hey!';
}
});
는하지만,이 모든 코드 뒤에, 나는 $booleanOrArray || [ ]
항상 false
을 반환 실현 놀랐다. 자바 스크립트에서
foo
이
null
, 또는
false
, 또는
undefined
경우 I 코드
var x = foo || bar;
는 다음
x
는 그 반대의 경우도 마찬가지
bar
값을 가지고 있고됩니다.
그래서, 질문 :
이 PHP에서 가능, 또는 나는
$x = ($booleanOrArray) ? $booleanOrArray : [ ]
같은 것을 할 필요가?이 경우 콜백 기능을 향상시킬 생각이 있습니까? (하지의 의견을 기반으로 만 기준)
$x = ($booleanOrArray) ? $booleanOrArray : [ ]
같은
제안 : 수동으로 강제 실행하고 예외를 던지는 대신 'callable' 유형 힌트를 사용할 수 있습니다. –
제 실제 응용 프로그램에서는 func_get_args() 함수 damsamycally를 사용하고 있습니다 만, 좋은 데이터입니다. 감사합니다! –
다음과 같이 쓸 수 있습니다 :'$ x = true or $ x = []; var_dump ($ x); 그리고'$ x = false 또는 $ x = []; var_dump ($ x);'하지만 @ dev-null-dweller가 제안한 짧은 삼항 연산자는 훨씬 더 좋아 보인다. – piotrekkr