사용자 정의 함수 호출 (물론 PHP 함수호출도 가능)
결론은 '이름 문자열'을 이용한 함수 호출.


1. php에 이미 정의된 함수 호출
$sFunc = 'strtoupper';
echo call_user_func($sFunc, 'aabbcc');

// 결과 = AABBCC




2. 개발자가 정의한 함수 호출
function myFunc($s)
{
    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




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





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
Posted by bloodguy
,