2009-11-28 5 views
0

잘못된 코드 :문자열을 사용하여 PHP에서 함수를 선언 하시겠습니까?

$functionName = 'sayThis'; 

function $functionName($string) { 
    echo $string; 
} 

내가 이런 일을 할 수 있습니까?

+1

정말 원하지 않습니다. 끔찍한 생각. –

+1

왜 이렇게하고 싶은지 이해하는 데 도움이 될 것입니다. 무엇을 성취하려고합니까? –

+0

많은 파일에서 동일한 함수 (processFormSubmission())가 있습니다. 이 함수는 현재 하나의 이름을 가지고 있지만 파일이있는 파일에 따라 여러 가지 작업을 수행합니다. 때로는 동일한 함수 이름을 한 번에 실행할 수 있습니다. 이 경우 함수가 이미 선언되었다는 오류가 발생합니다. 이름 충돌이 없도록 동적으로 함수의 이름을 지정하고 싶습니다. 함수의 동적으로 할당 된 이름은 클래스에 저장됩니다. –

답변

2

나는 이것을 권장하지 않지만 주장하는 경우 eval을 사용하는 것이 좋습니다.
매우 조심하십시오. 그리고 사용자 입력으로부터 멀리 떨어져 있어야합니다!

<?php 
$name = 'sayThis'; 

$code = <<<PHP 
function $name(\$string) { 
    echo \$string; 
} 
PHP; 
eval($code); 

$name('This is NOT a good idea!'); 
?> 
+0

+1 OP의 질문에 답하는 것 같습니다. 그것은 당신이 요구하는 것을 조심해야 할 것들 중 하나입니다. –

3

call_user_funccall_user_func_array 비슷한 것을 수행하십시오. 적고 사려 깊게 사용하십시오.

+0

함수 이름을 동적으로 선언하고 싶습니다. –

관련 문제