사용자 정의 함수 호출 (물론 PHP 함수호출도 가능)
결론은 '이름 문자열'을 이용한 함수 호출.
1. php에 이미 정의된 함수 호출
$sFunc = 'strtoupper';
echo call_user_func($sFunc, 'aabbcc');
// 결과 = AABBCC
echo call_user_func($sFunc, 'aabbcc');
// 결과 = AABBCC
2. 개발자가 정의한 함수 호출
function myFunc($s)
{
return strtoupper($s);
}
$sFunc = 'myFunc';
echo call_user_func($sFunc, 'aabbcc');
// 결과 = AABBCC
{
return strtoupper($s);
}
$sFunc = 'myFunc';
echo call_user_func($sFunc, 'aabbcc');
// 결과 = AABBCC
3. 클래스 메소드 호출
class Foo
{
public function bar($s)
{
return strtoupper($s);
}
}
$Foo = new Foo;
$sFunc = 'bar';
echo call_user_func_array(array($Foo, $sFunc), array('aabbcc'));
// 결과 = AABBCC
{
public function bar($s)
{
return strtoupper($s);
}
}
$Foo = new Foo;
$sFunc = 'bar';
echo call_user_func_array(array($Foo, $sFunc), array('aabbcc'));
// 결과 = AABBCC
4. 클래스 내부에서 자기자신의 메소드 호출
class Foo
{
public function bar($s)
{
$sFunc = '_bar';
call_user_func_array(array($this, $sFunc), array($s));
}
private function _bar($s)
{
return strtoupper($s);
}
}
$Foo = new Foo;
echo $Foo->bar('aabbcc');
// 결과 = AABBCC
{
public function bar($s)
{
$sFunc = '_bar';
call_user_func_array(array($this, $sFunc), array($s));
}
private function _bar($s)
{
return strtoupper($s);
}
}
$Foo = new Foo;
echo $Foo->bar('aabbcc');
// 결과 = AABBCC
5. static 메소드 호출
class Foo
{
static public function bar($s)
{
return strtoupper($s);
}
}
$sClass = 'Foo';
$sFunc = 'bar';
$sArg = 'aabbcc';
echo call_user_func($sClass.'::'.$sFunc, $sArg);
// 결과 = AABBCC
{
static public function bar($s)
{
return strtoupper($s);
}
}
$sClass = 'Foo';
$sFunc = 'bar';
$sArg = 'aabbcc';
echo call_user_func($sClass.'::'.$sFunc, $sArg);
// 결과 = AABBCC
'PHP' 카테고리의 다른 글
[PHP] debug_backtrace() - 함수호출 스택 디버깅 (0) | 2010.04.09 |
---|---|
[PHP] constant() 함수 (0) | 2010.04.08 |
[PHP] localhost의 real IP 가져오기 (0) | 2010.03.25 |
[PHP] 정규식을 이용하여 내부중첩 괄호 추출 (0) | 2010.03.24 |
[PHP] header를 이용한 파일 다운로드 (0) | 2010.03.18 |