Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Separare PHP e HTML

  1. #1

    Separare PHP e HTML

    Stavo leggendo QUESTO articolo sul perchè non utilizzare un template engine.

    E tutto sommato condivido.

    Il tipo propone alla fine di fornire al designer una funzione/API del tipo:
    <ul>
    <?php output($users); ?>[/list]

    Però, come potrei impostarla? Avreste percaso qualche esempio?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Sinceramente non sono neanch'io un fan dei template engine su PHP, perché essenzialmente PHP lo è già.

    Detto questo però devo dire che non sono d'accordo per niente con una funzione di questo tipo. In questo modo è necessario di avere parte del layout nel codice perché alla fine sarà la funzione a stamparlo e quindi l'idea di MVC rispettivamente della separazione di codice e presentazione verrebbe resa inutile.

    PHP dovrebbe stampare il meno possibile (tramite un codice più complesso naturalmente, usandolo come template engine ci devono essere ovviamente dei echo).

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  3. #3
    il template dovrebbe fornire delle "API" per stampare output, generalmente non usando php, quindi qualcosa del tipo

    codice:
    <ul>
    <% for( $utente in $utenti) %>[*]<% print $utente->nome %>
    <% loop %>[/list]
    dove poi il template engine sarà in grado di riconoscere che in <% e %> c'è una istruzione for da tradurre in un foreach e che $utenti sarà una variabile impostata altrove (controller?) che conterrà un elenco di utenti e che la variabile $utente conterrà un utente con campo/chiave nome etc etc

    cmq, piuttosto che farmi un template engine a mano, ne cercheri uno già fatto oppure un framework che usi tale metodologia.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    Originariamente inviato da Santino83_02
    il template dovrebbe fornire delle "API" per stampare output, generalmente non usando php, quindi qualcosa del tipo

    codice:
    <ul>
    <% for( $utente in $utenti) %>[*]<% print $utente->nome %>
    <% loop %>[/list]
    dove poi il template engine sarà in grado di riconoscere che in <% e %> c'è una istruzione for da tradurre in un foreach e che $utenti sarà una variabile impostata altrove (controller?) che conterrà un elenco di utenti e che la variabile $utente conterrà un utente con campo/chiave nome etc etc

    cmq, piuttosto che farmi un template engine a mano, ne cercheri uno già fatto oppure un framework che usi tale metodologia.
    Non voglio sminuire l'utilità dei template engine ne tantomeno innescare una diatriba tra pro e conto, ma alla fine, scrivendo del buon codice PHP che differenza c'è tra:

    codice:
    <ul>
    <% for( $utente in $utenti) %>[*]<% print $utente->nome %>
    <% loop %>[/list]
    e:

    codice:
    <ul>
    <?php for ( $utenti as $utente) { ?>[*]<?php print $utente->nome ?>
    <?php } ?>[/list]
    in quanto a chiarezza del codice e manutenibilità?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    stai scatenando la diatriba Sinceramente i vantaggi reali non li conosco, io ho sempre odiato usare i template, quindi i vantaggi reali non li ho mai apprezzati.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    ci sono anche foreach del genere che secondo me sono comodi:
    Codice PHP:
    <ul>
    <?php foreach($utenti as $utente): ?>[*]<?php print $utente->nome?>
    <?php 
    endforeach; ?>[/list]

  7. #7
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Originariamente inviato da Santino83_02
    stai scatenando la diatriba Sinceramente i vantaggi reali non li conosco, io ho sempre odiato usare i template, quindi i vantaggi reali non li ho mai apprezzati.
    Appunto, non ci sono vantaggi perché PHP è gia un template engine. Quindi usara Smarty p.e. sarebbe integrare un template engine dentro un template engine.

    L'unica cosa che possa essere considerata vagamente come un "vantaggio" sarebbe che il designer non potrà fare nient'altro che usare le funzioni del template engine, quindi non può aggiungere codice suo. Ma sarebbe più un tema sulla sicurezza.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  8. #8
    Grazie per le risposte.
    Effettivamente vorrei dare la possibilita all'utente di scegliere una grafica tra quelle disponibili.

    Quindi volevo procedere a dividere il codice dal layout.

    Vedrò do fare alcune prove...

    Grazie a tutti

  9. #9
    Sì ma anche una cosa così è sbagliata, se si vuole fare come suggerisce Cris, cioè permettere all'utente di crearsi dei propri template.
    codice:
    <ul>
    <% for( $utente in $utenti) %>[*]<% print $utente->nome %>
    <% loop %>[/list]
    Sarebbe meglio fare due pezzi; uno per il contenitore e uno per il contenuto
    codice:
    <ul>
    {$lista}[/list]
    e
    codice:
    [*]{$utente->nome}>
    .
    Il programmatore, nel codice che "prepara" i dati, dovrà prima creare il dettaglio
    Codice PHP:
    foreach ($clienti as $cliente){
    $lista .= costruisci_riga($cliente);

    e poi costruire il cotenitore completo
    Codice PHP:
    $contenuto costruisci_contenuto($lista);
    print 
    $contenuto
    (ovviamente sono concetti, non codice da usare così com'è scritto)
    In questo modo ogni singolo pezzo grafico è una funzione o un file separato: il programmatore assembla i pezzi e il grafico costruisce il layout, sapendo solamente che deve avere da una parte $lista e dall'altra $cliente->nome.

    Giusto?

  10. #10
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,648
    Sarà pur sbagliato usare php come template engine ma è più pulito a livello di codice. Modelli e controllori da una parte, template dall'altra.

    Specie se qualcuno che non capisce un acca di php deve mettere mani ai template.

    La soluzione per dividere completamente il codice è utilizzare il DomDocument (strumento molto pignolo) o classi come PHP Simple HTML DOM Parser. Se bisogna ciclare o iniettare il codice non occorre mettere dei foreach o dei puntatori ma utilizzare i classici attributi di html.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.