2012-07-28 4 views
1

문자열, 배열 또는 유사한 것을 기반으로 함수를 실행하는 PHP 함수 또는 명령이 있습니까? 기본적으로 문자열 "time"이 전달되면 time()이 반환되기를 원합니다. 이상적으로, 나는 전달 된 매개 변수도 지원하고 싶습니다. 나는 이것이 단지 개인적인 기능을 원한다. 분명한 이유 때문에 전체 코드 블록 eval()을 원하지 않습니다.문자열을 기반으로 함수를 실행하는 PHP 함수는 무엇입니까?

이와 비슷한 것은 없습니까? 아니면 바람직하게는 PHP에서 기본으로 제공되는 것입니까?

답변

3

해보십시오 call_user_func는() http://php.net/manual/en/function.call-user-func.php

첫 번째 인수 함수 이름을 나타내는 문자열입니다. 두 번째 인수는 단일 인수 또는 인수 배열 일 수 있습니다.

편집 : 당신이 요청으로

그것도 시간()와 같은 기본 기능을 지원합니다. 과 같이 그것을 밖으로 시도 :

echo call_user_func('time'); 
+0

아,이게 내가 찾고있는 것처럼 보입니다! 감사! 귀하의 답변을 수락하기 전에 정의 된 기능 만 지원합니까? 또는 모든 함수 (예 :'time()')가 지원됩니까? – Nathanael

+0

확실히 모든 기능을 지원합니다! –

3

당신은 함수 이름이 포함 된 변수를 사용하여 함수를 호출뿐만 아니라 그 함수에 매개 변수를 전달할 수 있습니다. 시도 :

<?php 

$func = 'strtoupper'; 

$res = $func('i am uppercase'); 

echo $res; // I AM UPPERCASE 

variable functionsvariable variables도를 참조하십시오. 언급 한 바와 같이 call_user_func()도 작동합니다.

안전을 위해, 당신은 호출 할 수

if (function_exists($func)) { ... } 

당신이 오류를 방지 확인을 기반으로 함수를 호출하기 전에. ReflectionFunctionAbstract::getNumberOfParameters을 사용하여 함수에서 허용하는 매개 변수의 수를 결정할 수 있습니다.

+0

흠, 재미 있습니다! 나는 이것에 대해 결코 알지 못했다. 아이디어를 가져 주셔서 감사합니다! 다른 대답이 질문에 더 잘 대답하지만, 대신이 질문을 사용하게 될 수도 있습니다. – Nathanael

관련 문제