반응형
PHP에서 call_user_func_array로 생성자를 호출하는 방법
call_user_func_array를 사용하여 클래스 생성자를 어떻게 호출 할 수 있습니까?
다음을 수행 할 수 없습니다.
$obj = new $class();
call_user_func_array(array($obj, '__construct'), $args);
생성자에 매개 변수가 있으면 새 매개 변수 가 실패하기 때문입니다.
제약 : 인스턴스화해야하는 클래스를 제어하거나 수정할 수 없습니다.
왜 내가이 미친 짓을하고 싶은지 묻지 마세요. 이건 미친 테스트입니다.
다음 과 같이 반사 를 사용할 수 있습니다 .
$reflect = new ReflectionClass($class);
$instance = $reflect->newInstanceArgs($args);
PHP 5.6.0부터 ...
연산자 를이 용도로 사용할 수도 있습니다.
$instance = new $class(...$args);
if(version_compare(PHP_VERSION, '5.6.0', '>=')){
$instance = new $class(...$args);
} else {
$reflect = new ReflectionClass($class);
$instance = $reflect->newInstanceArgs($args);
}
반응형
'program tip' 카테고리의 다른 글
루비 : define_method 대 def (0) | 2020.11.17 |
---|---|
UITextField에서 리턴 키를 비활성화 / 활성화하는 방법은 무엇입니까? (0) | 2020.11.17 |
MySQL의 열 이름 "order"에 대한 대안 (0) | 2020.11.17 |
자바에 '조건이 참이 될 때까지 차단'기능이 있습니까? (0) | 2020.11.17 |
결과가 null 일 때 PL / SQL에서 변수를 선택하는 방법은 무엇입니까? (0) | 2020.11.17 |