Pregunta

Estoy tratando de descubrir la forma más eficiente de implementar parciales / colecciones de estilo RoR para una clase de plantilla PHP que estoy escribiendo. Para aquellos que no están familiarizados con los rieles, quiero iterar sobre un fragmento de plantilla (digamos una fila de tabla o elemento de lista) ubicado en un archivo separado. Quiero hacer esto sin recurrir a evaluar o colocar una inclusión dentro del bucle .

He visto una publicación similar que aborda parciales individuales, que son triviales, pero nada que cubra la implementación de parciales en una colección. He estado pensando en esto tanto tiempo que me duele la cabeza y me temo que estoy pasando por alto una solución obvia. Espero que alguien aquí pueda sugerir una solución elegante que, nuevamente, no requiere evaluación o inclusión dentro del ciclo. TIA.

¿Fue útil?

Solución

Necesita un motor de plantillas con el que pueda procesar por sí solo y luego evaluar todo de una vez. Al igual que el preprocesador c funciona.

Paso 1 (plantilla de origen):

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

Paso 2 (después del preprocesamiento):

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

Paso 3 (representación final)

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

De esta forma, puede evitar la sobrecarga de evaluar / incluir sub-plantilla en cada paso del bucle.

Otros consejos

Estás preguntando cómo hacer algo sin recurrir a la solución.

Cualquier sistema de plantillas que use usará una evaluación o una inclusión dentro del bucle, incluso si está enterrado en una abstracción de 1000 capas de profundidad.

Así es como se hace.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top