문제

나는 내가 쓰고있는 PHP 템플릿 클래스를 위해 ROR 스타일 부분/컬렉션을 구현하는 가장 효율적인 방법을 찾으려고 노력하고 있습니다. 레일에 익숙하지 않은 사람들의 경우 별도의 파일에있는 템플릿 조각 (예 : 테이블 행 또는 목록 항목)을 반복하고 싶습니다. 나는 이것을하고 싶다 평가에 의지하거나 루프 내에 포함 된 내용을 배치하지 않고.

나는 a 비슷한 게시물 이는 단일 부분을 다루며 사소한 부분이지만 컬렉션에서 부분을 구현하는 것을 다루는 것은 없습니다. 나는 이것에 대해 너무 오래 생각하고 머리가 아파서 명백한 해결책을 내려다보고 두려워합니다. 여기에 누군가가 다시 루프 내에 평가하거나 포함 할 필요가없는 우아한 솔루션을 제안 할 수 있기를 바랍니다. 티아.

도움이 되었습니까?

해결책

프로세스가 포함 된 템플릿 엔진이 필요하고 한 번에 모든 것을 평가할 수 있습니다. C Preprocessor Works와 매우 유사합니다.

1 단계 (소스 템플릿) :

$template = '
   foreach($bigarray as $record)
       #include "template_for_record.php"
'

2 단계 (전처리 후) :

$template = '
   foreach($bigarray as $record)
       // include statement replaced with file contents
       echo $record['name'] etc
'

3 단계 (최종 렌더링)

  // eval() only once
  eval($template);

이러한 방식으로 모든 루프 단계에서 하위 템플릿을 평가/포함하는 오버 헤드를 피할 수 있습니다.

다른 팁

솔루션에 의지하지 않고 무언가를하는 방법을 묻습니다.

사용하는 모든 템플릿 시스템은 추상화 1000 층 깊이에 묻힌 경우에도 루프 내에서 평가 또는 포함 내용을 사용합니다.

그게 끝났습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top