I cicli ricorsivi

I cicli ricorsivi sono una funzionalità molto potente al fine di gestire l’impaginazione dell’interfaccia. La programmazione è particolarmente semplice, tuttavia l’utilizzo richiede una buona organizzazione logica della concatenazione dei cicli.

La chiamata a un ciclo ricorsivo è molto semplice: è sufficiente indicare nel TIPO del ciclo il nome di un altro ciclo:

<BOUCLEn(cicloX)></BOUCLEn>

In questo caso non si impiegano criteri: in realtà, il ciclo n corrisponde a una copia pura e semplice del ciclo X. L’insieme del ciclo funziona come se si fosse ricopiato tutto il ciclo X (tutti i segnaposti e il codice HTML, come pure i testi condizionali prima e dopo e il testo alternativo) nel posto dove si inserisce il ciclo n. (Beninteso, è necessario che il ciclo X preceda il ciclo n.)

L’uso più semplice è quello di "duplicare" un ciclo senza doverlo ricopiare. Inoltre, ogni modifica apportata al ciclo d’origine X sarà duplicata automaticamente nel ciclo n.

La sua utilità è, in realtà, di mettere il ciclo n all’interno del ciclo X: in tal modo si ottiene un comportamento ricorsivo: il ciclo X contiene un ciclo n, che a sua volta riproduce il ciclo X che contiene il ciclo n, e via dicendo, fino a quando il ciclo X non restituisce più alcun risultato.

In particolare, questa tecnica permette di creare la visualizzazione dei thread dei forum. Ciò è molto semplice: un primo ciclo "crea" il capofila dei thread (i messaggi che rispondono direttamente a un articolo), un secondo ciclo mostra le risposte a questi messaggi, e un ciclo ricorsivo provoca la ricorsività su questo secondo ciclo:

<BOUCLE_forum(FORUMS){id_article}>
   <p>#TITRE
   <B_risposte>
   <UL>
   <BOUCLE_risposte(FORUMS){id_parent}>
      <LI>#TITRE
      <BOUCLE_ricorsivo(boucle_risposte)>
      </BOUCLE_ricorsivo>
   </BOUCLE_risposte>
   </UL>
   </B_risposte>
</BOUCLE_forum>

Con pochissime linee è quindi possibile visualizzare tutta la struttura (rubriche, sotto-rubriche...) del sito.

Autore Fausto Barbarito Publié le : Mis à jour : 26/10/12

Traductions : عربي, català, Deutsch, English, Español, français, italiano, Nederlands