Qual è il modo migliore per mantenere la struttura del documento html e la struttura del controllo php strongmente visibili nel file di visualizzazione complesso

1

Creo molte viste nel mio lavoro come parte del modello MVC comune applicato nei framework Web come Code Igniter e Cake.

Inoltre aderisco alla massima seguente nel modo migliore: modelli grassi e oggetti della biblioteca che fanno la logica; controller skinny che rispondono al lato server delle azioni dell'utente; e viste che presentano i risultati delle richieste e forniscono l'interfaccia utente.

Questo mi porta ad una situazione in cui molte viste sono solo html, echos variabili e loop, con il markup che accompagna l'applicazione css e javascript. Bello e chiaro.

Tuttavia, in alcuni casi le visualizzazioni devono essere più complesse. Potremmo aver bisogno di fare cose diverse in base allo stato di ogni elemento in loop, ad esempio e talvolta questo diventa piuttosto complesso.

Il problema con questo è che l'identificazione applicata a html e php presto diventa fuori sincrono.

Un esempio molto semplice:

<ul>
   <li> ... </li>
   <li> ... </li>
   <?foreach>
       <li> ... </li>
   <?endforeach>
</ul>

Ora abbiamo elementi li che sono alla stessa profondità nel documento di output ma non allo stesso livello nel codice. Se iniziamo ad usare altre strutture di controllo, questo può peggiorare:

<ul>
   <li> ... </li>
   <li> ... </li>
   <?foreach>
       <li> ... </li>
       <?if>
           <li> ... </li>
       <?endif>
   <?endforeach>
</ul>

E così via ...

C'è un modello ben utilizzato che posso seguire per minimizzare questo problema anche con viste complesse?

    
posta Toni Leigh 08.03.2014 - 13:03
fonte

1 risposta

4

La compilazione condizionale in C e C ++ soffre di un problema simile: l'interleaving delle direttive del preprocessore e del codice C / C ++.

Il solito trucco è quello di indentarli indipendentemente l'uno dall'altro. Un bit complesso di codice potrebbe essere simile a questo:

{
    ...
    {
        ...
#if A
# if B
        ...
# else
        ...
# endif
#else
        ...
#endif
    }
}

Come puoi vedere, le direttive del preprocessore ( #if / #else / #endif ) usano una indentazione completamente separata rispetto al codice con cui sono interlacciate (rappresentato da ... ) e persino un numero diverso di spazi per livello di indentazione.

Per le tue viste complesse, potresti utilizzare una strategia simile e indentare PHP e HTML indipendentemente l'uno dall'altro. Dovrai decidere autonomamente se migliora o ostacola la leggibilità.

    
risposta data 08.03.2014 - 14:13
fonte

Leggi altre domande sui tag