반응형
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- EnvSub
- SetMouseDelay
- SetKeyDelay
- StringGetPos
- ControlGetText
- API
- 배열
- IfWinExist
- Menu
- SetEnv
- IF (식)
- SetTitleMatchMode
- Blocks
- autohotkey
- DetectHiddenWindows
- Threads
- IfInString
- if
- EnvDiv
- 식의 설명
- EnvSet
- 식
- SetControlDelay
- if(식)
- EnvMult
- Var:=식
- ControlSend
- MouseClick
- EnvAdd
- 함수
Archives
- Today
- Total
ㄴrㅎnㅂrㄹrㄱi
<<< EOF 문자열 안에 Gettext를 사용하는 PHP 본문
반응형
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
반응형
Comments