2011-11-23 5 views
7

어떻게 defineheredoc 안에 사용합니까? 예를 들어 :정의하고 heredoc

define('PREFIX', '/holiday'); 

$body = <<<EOD 
<img src="PREFIX/images/hello.png" /> // This doesn't work. 
EOD; 

답변

9

the documentation regarding strings

DEFINE('PREFIX','/holiday'); 

$const = PREFIX; 

echo <<<EOD 
<img src="{$const}/images/hello.png" /> 
EOD; 
+0

감사를 시도! 작은 메모 추가 :'$ const/images/hello.png'도 작동합니다. – moey

+0

이 예에서는 중괄호가 필요하지 않습니다. – wlf

+0

또한'$ consts = get_defined_constants();'를 사용하여 모든 정의를 얻은 다음'{$ consts [ 'PREFIX']}'를 사용하여 액세스 할 수 있습니다. – PhoneixS

2
에서 히어 닥 구문 내에서 사용

상수를 촬영하는 것은 해석되지 않습니다!

편집자 주 : 이것은 사실입니다. PHP는 heredoc 블록 내의 다른 문자열로부터 상수를 인식 할 방법이 없다. 당신이 1 개 이상의 일정이있는 경우

Source

+0

그 규칙에 대한 예외가있는 것처럼 보입니다. http://stackoverflow.com/a/12508992/367456 – hakre

5

, 변수 사용이 어렵다. 그래서이 방법

define('PREFIX', '/holiday'); 
define('SUFFIX', '/work'); 
define('BLABLA', '/lorem'); 
define('ETC', '/ipsum'); 

$cname = 'constant'; // if you want to use a function in heredoc, you must save function name in variable 

$body = <<<EOD 
<img src="{$cname('PREFIX')}/images/hello.png" /> 
<img src="{$cname('SUFFIX')}/images/hello.png" /> 
<img src="{$cname('BLABLA')}/images/hello.png" /> 
<img src="{$cname('ETC')}/images/hello.png" /> 
EOD; 

http://codepad.org/lA8L2wQR

+0

나는 그것이 재미 있다고 생각했기 때문에 그것을 시도하기 위해 당신의 제안을 따랐지만, 당신의 제안이 내 마음에 들었습니다. 많은 오류가 있기 때문에 테스트되지 않았습니다. – hakre

+0

답변을 변경했습니다. –

+0

이것은 잘 작동합니다! –

관련 문제