관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

<<< EOF 문자열 안에 Gettext를 사용하는 PHP 본문

카테고리 없음

<<< 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 컨텐트를 포맷 할 수 있습니다. 어떻게이 문자열 내부의 함수를 사용할 수 있습니까?

 

반응형
Comments