Quali sono i vantaggi dell'utilizzo di un linguaggio modello?

2

Lavoro su un'applicazione CakePHP e le visualizzazioni sono costituite da html raw con istruzioni php echo incorporate, che nel tempo sono diventate piuttosto disordinate. Prima di entrare e riscrivere il codice, mi chiedo se abbia senso riscrivere le viste con un motore di template, come Twig o Smarty, ma non ho esperienza con i motori di template. Quali sono tutti i vantaggi dell'utilizzo di un motore di template?

    
posta dandrews 18.09.2012 - 19:41
fonte

3 risposte

9

Sì, ne vale la pena.

Mentre PHP è una sorta di linguaggio template, la sintassi è, come avete osservato, maldestra e non aiuta molto la leggibilità. I tag brevi alleviano un po 'la verbosità, ma non appena i condizionali e l'iterazione entrano in gioco, le cose si complicano.

Inoltre, PHP non si occupa dell'output di codifica per te; se fai quanto segue:

<a href="<?= $_GET['some_url'] ?>">Click here!</a>

... quindi ti sei una grossa vulnerabilità XSS; un motore di template appropriato imposta automaticamente la codifica HTML di tutte le variabili che vengono interpolate, a meno che non vengano sovrascritte esplicitamente. Ciò significa che non puoi incappare accidentalmente in questa falla di sicurezza comune.

Con questi due in mente, confronta:

<ul>
    <?php foreach ($items as $item): ?>
    <li><a href="<?= htmlspecialchars($item['url']) ?>"><?= htmlspecialchars($item['title']) ?></a></li>
    <?php endforeach; ?>
</ul>

vs:.

<ul>
    {%foreach items as item%}
    <li><a href="{item.url}">{item.title}</a></li>
    {%end%}
</ul>

Un altro vantaggio, più psicologico che tecnico, è che un motore di template impone (o almeno suggerisce strongmente) di mantenere il codice di presentazione separato dalla logica dell'applicazione.

Una cosa da tenere a mente, però; PHP non era destinato alla scrittura di parser e simili, quindi i motori di template scritti in PHP puro possono essere piuttosto lenti. Alcuni di essi sono implementati in un linguaggio più adatto ed esposti come moduli PHP; puoi anche trovare altri che possono essere compilati con PHP raw, che, una volta compilato, può essere chiamato direttamente.

    
risposta data 18.09.2012 - 20:59
fonte
0

Utilizzo il pattern di progettazione MVC per alcuni anni.

MVC consente di separare la logica aziendale (modello) dalle interazioni utente (controller) e dai modelli (viste). Ho lavorato con Zend_View per molto tempo e non avrei usato un motore di template con esso. link

    
risposta data 19.09.2012 - 09:38
fonte
-1

Secondo me, un motore di template è utile solo se il tuo progetto richiede agli utenti la possibilità di creare temi personalizzati. Hai passato molti anni ad imparare PHP giusto? A meno che tu non voglia che altre persone "non php" modifichino il tema, usa semplicemente PHP nei layout. Un motore di template richiede tempo per imparare e aggiunge un overhead aggiuntivo al tuo script.

    
risposta data 18.09.2012 - 20:07
fonte

Leggi altre domande sui tag