본문 바로가기
IT/programming

[PHP] 변수명으로 함수 호출 / function_exists()

by 어느해겨울 2022. 3. 4.

변수명으로 함수 호출

PHP 개발을 하다보면 함수명을 동적으로 호출해야할 때가 있는다.

생각보다 간단하므로 아래 소스코드를 참고 하면된다.

 

 

소스코드

- test(), test2() 두개의 함수를 생성하고 변수에 함수명을 입력한다.

1. function_exists() 를 이용하여 해당 문자열과 동일한 함수가 있는지 확인한다.

2. 해당 문자열과 동일한 함수가 존재한다면 변수에 () 기호를 붙여 함수를 호출하여 동작하는지 확인한다.

3. 해당 문자열과 동일한 함수가 없다면 예외 처리를 한다.

<?php
    function test() {
        print("test\n");
        return ;
    }

    function test2() {
        print("test2\n");
        return ;
    }

    /*
        function_exists : 인자로 주어진 문자열과 동일한 함수가 존재하는지 확인
        $func() : 변수명에 함수기호 () 를 붙여주면 함수로 동작한다.
    */

    $func = "test";
    if( function_exists($func) ) {
        $func();

    } else {
        print("{$func} - function not found\n");
    }


    $func = "test2";
    if( function_exists($func) ) {
        $func();

    } else {
        print("{$func} - function not found\n");
    }


    $func = "test3";
    if( function_exists($func) ) {
        $func();

    } else {
        print("{$func} - function not found\n");
    }
?>

 

결과

test
test2
test3 - function not found

 

변수와 동일한 함수가 실행되는 것을 확인할 수 있다.

즉 함수 call point 를 꼭 fixed하지 않고 상황에 따라서 가변적으로 함수를 call 할 수 있다는 점을 기억하자.

 

끝.

 

댓글