2012-04-04 2 views
3

함수 이름을 지정하지 않고 동일한 함수 내에서 함수를 호출 할 수 있습니까? 예 : 일종의 마법 키워드 사용?PHP, 함수 이름을 지정하지 않고 동일한 함수 내에서 함수를 호출 할 수 있습니까?

+0

은 나쁜 생각처럼 들리지만 무엇을 묻고 싶습니다. –

+0

@Dagon 생성 된 함수를 재귀 적으로 호출하는 것이 좋습니다. – binarious

+0

@binarious 함수를 생성하는 경우 함수의 이름을 알아야합니다. 지난 달에 상호 - 재귀 함수로 가득 찬 수십 개의 (관련, 코드 공유) 코드 생성기를 구현했으며, 각 코드 생성기에서 모든 함수의 이름을 매핑에 사용합니다. – delnan

답변

5

예. 상수 __FUNCTION__은 현재 함수의 문자열 표현을 제공합니다. (src)

function testMe() { 
    print __FUNCTION__; 
} 

testMe(); // outputs "testMe" 

당신은 다음의 과정 자체를 호출하려면이 옵션을 사용할 수 있습니다 $i 경우 $i 배속을 위해 자신을 호출, 함수의 이름을 모른 채 재귀

$func = __FUNCTION__; 
$func(); 
+0

또한, OO 환경에 있다면'__METHOD__'. –

+0

니스! 이것은 호출 가능합니까? ie $ foo = __FUNCTION __ ($ arg); 내가 집에 갈 때 시도 할 것입니다. 나는 이것이 학대 당할 수 있다는 것에 동의하지만, 이것을 일반적인 재귀 함수에 사용하는 것도 상상할 수 있습니다. 나는 그것이 몇몇 알고리즘에 적용될 수 있다고 상상한다. – stefgosselin

+0

은 직접 호출 할 수 없으므로 \ _ \ _ FUNCTION \ _ \ _을 var에 넣어야합니다. 재귀 익명 함수를 원한다면 유용 할 수 있습니다 ^^ –

0
function someFunction($i) 
{ 
    $method = __FUNCTION__; 
    if ($i > 0) 
    { 
     return $method($i-1); 
    } 
    return $i; 
} 

간단한 예를 긍정이다.

관련 문제