PHP는 큰 따옴표로 묶인 문자열에서 변수 보간을 지원합니다.함수 출력을위한 PHP 보간 문자열
$s = "foo $bar";
그러나 함수 호출 결과를 큰 따옴표 붙은 문자열로 보간 할 수 있습니까?
$s = "foo {bar()}";
그런가요? 가능하지 않나요?
PHP는 큰 따옴표로 묶인 문자열에서 변수 보간을 지원합니다.함수 출력을위한 PHP 보간 문자열
$s = "foo $bar";
그러나 함수 호출 결과를 큰 따옴표 붙은 문자열로 보간 할 수 있습니까?
$s = "foo {bar()}";
그런가요? 가능하지 않나요?
PHP의 큰 따옴표 기능은 PHP 코드를 평가하지 않고 간단히 변수를 값으로 대체합니다. 정말이있는 경우
$foo = create_function("", "bar()");
$foo();
만이 사용 : 당신은 그냥 함수를 만들려면
eval("function foo() { bar() }");
을 또는 : 당신이 실제로 동적 (매우 위험) PHP 코드를 평가하려면 eval
를 사용해야합니다 다른 옵션은 없습니다.
함수가 클래스 안에 있다면, 다음과 같이 문자열 내부를 참조 할 수 있습니다 :'$ s = "foo {$ this-> bar()}"; – nawfal
Overv 's answer가 나타내는 것처럼 string-to-function-name 호출 기술을 사용하는 것이 절대적으로 가능합니다. 파서가 $가 될 것으로 예상하고 있기 때문에 많은 사소한 대체의 경우는, 같은
당신은 변수를 필요"<input value='<?php echo 1 + 1 + foo()/bar(); ?>' />"
과 다른 문법보다 훨씬 더 읽습니다. ID tranform이 통어론 해킹으로 잘 작동하는 곳입니다. 그냥 신원 함수를 선언하고, 범위 변수에 이름을 할당합니다
function identity($arg){return $arg;}
$interpolate="identity";
는 그런 다음 함수 인수로 유효한 PHP 식을 전달할 수 있습니다
"<input value='{$interpolate(1 + 1 + foo()/bar())}' />"
거꾸로 당신이 할 수 있다는 것입니다 많은 사소한 지역 변수와 echo 문을 제거합니다.
단점은 $ interpolate 변수가 범위를 벗어난다는 것입니다. 따라서 함수와 메소드 내부에서 반복적으로 선언해야합니다.
내삽이 절대적으로 필요한 경우가 아니라면 (이유를 설명하고 알려주십시오) 함수 출력을 문자열과 연결하십시오.
$s = "foo " . bar();
출처 : http://docstore.mik.ua/orelly/webprog/pcook/ch01_08.htm
Ok 그러나 실제로 이것은 질문에 답하지 않습니다;) – Blackbam
이 예는 수 없습니다. 그냥 시도하여 대답을 얻을 수 있습니다 – Ibu
* interpolating * 또는 * 해석 * 의미 했습니까? – hakre