소개
변수 이름 앞에 매개변수가 있거나 없는 괄호가 있는 경우 PHP 파서는 이름이 변수 값에 해당하는 함수를 찾고 실행합니다. 이러한 기능을 가변 기능이라고 합니다. 이 기능은 콜백, 함수 테이블 등을 구현하는 데 유용합니다.
변수 함수는 include, require, echo 등과 같은 언어 구성으로 만들 수 없습니다. 하지만 함수 래퍼를 사용하여 해결 방법을 찾을 수 있습니다.
변수 함수 예
다음 예에서 변수의 값은 이름의 함수와 일치합니다. 따라서 함수는 변수 앞에 괄호를 넣어 호출됩니다.
예시
<?php function hello(){ echo "Hello World"; } $var="Hello"; $var(); ?>
출력
그러면 다음과 같은 결과가 생성됩니다. -
Hello World
다음은 인수가 있는 변수 함수의 또 다른 예입니다.
예시
<?php function add($x, $y){ echo $x+$y; } $var="add"; $var(10,20); ?>
출력
그러면 다음과 같은 결과가 생성됩니다. -
30
다음 예에서는 호출할 함수의 이름을 사용자가 입력합니다.
예시
<?php function add($x, $y){ echo $x+$y; } function sub($x, $y){ echo $x-$y; } $var=readline("enter name of function: "); $var(10,20); ?>
출력
그러면 다음과 같은 결과가 생성됩니다. -
enter name of function: add 30
변수 메소드 예
변수 함수의 개념은 클래스의 메소드로 확장 가능
예시
<?php class myclass{ function welcome($name){ echo "Welcome $name"; } } $obj=new myclass(); $f="welcome"; $obj->$f("Amar"); ?>
출력
그러면 다음과 같은 결과가 생성됩니다. -
Welcome Amar
정적 메서드는 가변 메서드 기술로도 호출할 수 있습니다.
예시
<?php class myclass{ static function welcome($name){ echo "Welcome $name"; } } $f="welcome"; myclass::$f("Amar"); ?>
출력
이제 다음과 같이 예외가 발생합니다 -
Welcome Amar