클래스에 대한 이벤트 처리기를 만들고 있지만 코드 평가 대신 클로저를 사용하는 것이 더 나은지 궁금합니다.eval() 대신 이벤트 처리를 위해 클로저를 사용하는 것이 더 좋습니까?
eval()을 사용하는 유일한 이유는 클래스 내의 모든 항목에 액세스 할 수 있기 때문입니다 (실제로는 안전하지 않습니다 : D).하지만 클로저가 할 수 있는지 여부는 알 수 없습니다.
나는 이런 식으로 뭔가 한 경우 :
<?php
class SomethingCool {
protected $handlers;
public function addHandler($cmd, closure $func) {
$this->handlers[$cmd][] = $func;
}
public function handle($cmd) {
if(!isset($this->handlers[$cmd]))
return false;
foreach($this->handlers[$cmd] as $func)
$func();
}
}
?>
<?php
$wut = new SomethingCool();
$wut->addHandler('lol', function() use($wut) {
$wut->handle('lol');
}
);
?>
가 오류없이 실행할 것인가를? 나는 그것을 스스로 시험 할 것이지만, 나는 그 순간에 할 수 없다.
'unset' 참조 해제로 인한 명백한 오류 외에도 ... –
'$ this'는 무엇을 참조해야합니까? –
참고 : http://php.net/manual/en/functions.anonymous.php#107949 –