MLBuilder è una raccolta di classi utili per sviluppari sistemi che hanno verranno usati per generare al volo una interfaccia (o parti di essa).
MLBuilder non è stato pensato per l'utente (il programmatore, in questo caso) finale: è nata per essere utilizzata facilmente da altro codice PHP che abbia la necessità di generare automaticamente una interfaccia completa (ad esempio una intera pagina web); inoltre, basandosi su MLBuilder, dovrebbe essere estremamente semplice creare classi per la gestione di oggetti meno generici (come singoli tag) o la scrittura di funzioni che realizzino scopi mirati (ad esempio per la visualizzazione di una select HTML).
MLBuilder è diviso in due parti: la prima, nel file mlbuilder.inc, contiene un insieme di classi generiche che definiscono la struttura generale di un insieme di tag; la seconda parte, nei restanti file ".inc" (ad esempio htmlbuilder.inc), contengono una serie di classi derivate dalle precedenti personalizzandole secondo necessità (ad esempio htmlbuilder.inc specifica che i caratteri di apertura e chiusura di un tag HTML sono rispettivamente "<" e ">"). Partendo da queste classi è poi possibile implementarne altre per semplificare la vita all'utilizzatore (ad esempio la classe HTMLTable).
Per informazioni dettagliate sulle interfacce esposte dalle librerie di classi, consultare i documenti che si trovano nella rispettive sottodirectory di "doc" (come "doc/mldbuilder" e "doc/htmlbuilder").
MLBuilder presenta un paio di classi che vorrebbero essere il più possibile generiche e che non dovrebbero essere istanziate direttamente dal cliente, ma usate per creare nuove classi specifiche per una dato sistema di tag.
La classe "MLSimpleTag" genera un tag semplice, con un carattere di apertura del tag, uno di chiusura, il tag stesso e le opzioni ad esso associate.
La classe "MLTag" fornisce la rappresentazione dei tipici "tag contenitori", ovvero le coppie di tag che delimitano una parte del documento e che al loro interno possono contenere ulteriori tag. "MLTag" incapsula quindi due tag di tipo "MLSimpleTag", ha la possibilità di aggiungere opzioni al tag di apertura e di aggiungere elementi al proprio interno.
Questa raccolta di classi è il tipico cliente di mlbuilder: essa estende la classe "MLSimpleTag" (in "HTMLSimpleTag") con lo scopo di specificare i caratteri di apertura e chiusura dei tag caratteristici dell'HTML (ovvero "<" e ">"); la classe "HTMLTag" prende definisce il tipo di tag che userà al proprio interno (ovvero "HTMLSimpleTag") e modifica quanto necessario per creare correttamente il tag finale.
Partendo da queste due classi è in pratica possibile creare automaticamente una intera pagina HTML; ovviamente alcuni gruppi di tag hanno una struttura leggermente più complessa e si prestano quindi ad essere rappresentati come classi separate che mantengano la propria consistenza; ad esempio abbiamo elementi come "HTMLPage", "HTMLTable" o "HTMLSelect".