소개
변수 이름 앞에 매개변수가 있거나 없는 괄호가 있는 경우 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