program tip

PHP에서 call_user_func_array로 생성자를 호출하는 방법

radiobox 2020. 11. 17. 07:59
반응형

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);
}

참고 URL : https://stackoverflow.com/questions/2409237/how-to-call-the-constructor-with-call-user-func-array-in-php

반응형