일반적인 언어에서는 아래와 같이 오버로딩하여 사용할 수 있지만 PHP에서는 같은 함수 이렇게 정의하면 에러가 난다.
function per(string $name) {}
function per(string $name, int $age) {}
function per(string $name) {}
function per(string $name, int $age) {}
그래서 필요한것이 바로 Function Handling이다.
function per() {
$argCount = func_num_args();
switch ($argCount) {
case 1:
echo '이름: ' . func_get_arg(0);
break;
case 2:
echo '이름: ' . func_get_arg(0) . ' / 나이: '. func_get_arg(1);
break;
default:
echo '총원 : 92명';
}
}
// per();
// per('손오공');
per('손오공',17);
result :
이름: 손오공 / 나이: 17
입력된 함수가 사용되고 있는지 확인할 수 있다.
특히 CMS(wordpress...)등에서 플러그인과 테마 제작시 다양한 플러그인들로 인해 함수명이 겹칠 수 있으므로 함수명과 클레스명에 대한 체크는 필수적이다.
전체 함수를 보려면 get_defined_functions() 함수를 통해 확인할 수 있다.
Function Handling
- call_user_func_array — Call a callback with an array of parameters
- call_user_func — Call the callback given by the first parameter
- create_function — Create an anonymous (lambda-style) function
- forward_static_call_array — Call a static method and pass the arguments as array
- forward_static_call — Call a static method
- func_get_arg — Return an item from the argument list
- func_get_args — Returns an array comprising a function's argument list
- func_num_args — Returns the number of arguments passed to the function
- function_exists — Return true if the given function has been defined
- get_defined_functions — Returns an array of all defined functions
- register_shutdown_function — Register a function for execution on shutdown
- register_tick_function — Register a function for execution on each tick
- unregister_tick_function — De-register a function for execution on each tick
http://docs.php.net/manual/en/ref.funchand.php