3
나는 PHP의 __call()
마법 메서드를 사용하여 호출되는 메서드가있는 클래스를 만들려고합니다. 이 마법 메서드는 다음과 같이 다른 객체를 초기화합니다.알 수없는 인수로 객체를 초기화하는 방법은 무엇입니까?
public function __call($function, $arguments) {
/* Only allow function beginning with 'add' */
if (! preg_match('/^add/', $function)) {
trigger_error('Call to undefined method ' . __CLASS__ . '::' . $function, E_USER_ERROR);
}
$class = 'NamodgField_' . substr($function, 3); /* Ex: $function = addTextField() => $class = NamodgField_TextField */
/* This doesn't work! Because $class is not an object yet */
call_user_func_array(array(new $class, '__construct'), $arguments);
}
코드의 마지막 줄은 완전히 worng입니다! 나는 단지 내가하고 싶은 것을 분명히하려고 노력하고있다.
새 개체를 차례로 초기화 할 때 $arguments
을 전달할 수 있기를 바랄 때마다 각 자식 클래스가 필요한 인수를 정의 할 수 있습니다.
나는 eval()
을 사용하여 해결책을 찾았지만 정말 좋아하지 않습니다.
어떤 아이디어?
예, 그게 전부입니다. 고마워요 ^^ – Maher4Ever