카테고리 없음
<<< EOF 문자열 안에 Gettext를 사용하는 PHP
님투
2019. 10. 23. 01:44
반응형
PHP의 EOF 문자열을 사용하여 인용 부호 등을 이스케이프하지 않아도 HTML 컨텐트를 포맷 할 수 있습니다. 어떻게이 문자열 내부의 함수를 사용할 수 있습니까?
<?php
$str = <<<EOF
<p>Hello</p>
<p><?= _("World"); ?></p>
EOF;
echo $str;
?>
우수 답변
지금까지 the manual에서 볼 수있는 것처럼 HEREDOC 문자열 내부에서 함수를 호출 할 수는 없습니다. 성가신 방법은 미리 단어를 준비하는 것입니다.
<?php
$world = _("World");
$str = <<<EOF
<p>Hello</p>
<p>$world</p>
EOF;
echo $str;
?>
마음에 떠오르는 해결 방법은 magic getter method 클래스를 만드는 것입니다.
당신은 다음과 같은 클래스를 선언 할 것이다 :
class Translator
{
public function __get($name) {
return _($name); // Does the gettext lookup
}
}
어떤 시점에서 클래스의 객체를 초기화하십시오 :
$translate = new Translator();
다음 구문을 사용하여 HEREDOC 블록 내에서 gettext 조회를 수행 할 수 있습니다.
$str = <<<EOF
<p>Hello</p>
<p>{$translate->World}</p>
EOF;
echo $str;
?>
$ translate- > World는 자동 getter 방식 덕분에 자동으로 gettext lookup으로 변환됩니다.
공백이나 특수 문자가있는 단어 (예 : Hello World !!!!!!라는 gettext 항목)에이 방법을 사용하려면 다음 표기법을 사용해야합니다.
$translate->{"Hello World!!!!!!"}
이것은 모두 테스트되지 않았지만 작동해야합니다.
Update: As @mario found out, it is possible to call functions from HEREDOC strings after all. I think using getters like this is a sleek solution, but using a direct function call may be easier. See the comments on how to do this.
이글의 원본
https://codeday.me/ko/qa/20190314/65757.html
<<< EOF 문자열 안에 Gettext를 사용하는 PHP - 코드 로그
PHP의 EOF 문자열을 사용하여 인용 부호 등을 이스케이프하지 않아도 HTML 컨텐트를 포맷 할 수 있습니다. 어떻게이 문자열 내부의 함수를 사용할 수 있습니까?
반응형