문자열 값이있는 함수 이름을 만들고 싶습니다. 이 같은문자열 값에서 PHP 함수 만들기
뭔가 : 물론
$ns = 'test';
function $ns.'_this'(){}
test_this();
이 오류가 발생합니다.
function {$ns}.'_this'
function {$ns.'_this'}
하지만 운 :
나는 함께 시도했습니다.
의견이 있으십니까?
문자열 값이있는 함수 이름을 만들고 싶습니다. 이 같은문자열 값에서 PHP 함수 만들기
뭔가 : 물론
$ns = 'test';
function $ns.'_this'(){}
test_this();
이 오류가 발생합니다.
function {$ns}.'_this'
function {$ns.'_this'}
하지만 운 :
나는 함께 시도했습니다.
의견이 있으십니까?
이 하지있다. 원하는 모든 것을 모든 공통 접두사로 접두어로 붙이려면, 네임 스페이스를 사용하고 싶습니까?
제공된 문자열에서 create_function
을 사용하여 함수를 만들 수 있습니다.
예 (php.net)
<?php
$newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
echo "New anonymous function: $newfunc\n";
echo $newfunc(2, M_E) . "\n";
// outputs
// New anonymous function: lambda_1
// ln(2) + ln(2.718281828459) = 1.6931471805599
?>
오른쪽으로 보았습니다. 나는 여전히 전통적인 방식으로 함수를 호출 할 수 있기를 원합니다. 이것은 허용되지 않습니다. –
이 정보가 필요하십니까?
<?php
function foo($a) { print 'foo called'.$a; }
$myfunctionNameStr = 'foo';
$myfunctionNameStr(2);
?>
왜냐하면 저는 동적으로 함수 선언을 구성 할 수 있다고 생각하지 않습니다. 당신은 'runtime'에서 $ myfunctionNameStr의 값을 결정할 수 있습니다. 기능을 "선언"코드 기능 (somefile.php
)
function outputFunctionCode($function_name)
{?>
function <?php echo $function_name ?>()
{
//your code
}
<?php }
파일을
파일 :
ob_start();
include("somefile.php");
outputFunctionCode("myDynamicFunction");
$contents = ob_get_contents();
ob_end_clean();
$file = fopen("somefile2.php", "w");
fwrite($file,$contents);
fclose($file);
include("somefile2.php");
그것은 추한이지만, 다시, 그것을 선언 할 수있는 매우 좋은 생각이다 동적 이름을 가진 함수.
동의할만한 것으로 추측 할 수 있지만 OP가 요청한 것을 수행합니다. – SeanDowney
"eval"을 사용하는 것은 좋은 습관은 아니지만 때로는 요구 사항과 비슷한 목적을 달성 할 수 있습니다.
<?php
$ns = 'test';
$funcName = $ns.'_this';
eval("function $funcName(){ echo 1;}");
test_this();
?>
어, 나는 이미 네임 스페이스로 그 길을 따라 갔다. 나는 PHP 네임 스페이스가 끔찍하다고 말합니다. 어쨌든, 나는 그것이 내가 할 수 없다는 것을 알고 싶었다. –