Adskillelse af logik og præsentation ?

Tags:    php

<< < 12 > >>
Hvordan adskiller man sin logik fra sit præsentationslag med PHP og de mest gængse frameworks ?



Så man skal lære en helt ny syntaks at kende når man kaster sig over Smarty (ja, den minder meget om PHP)?

Tak for svarene :)




Så konklussionen må dog være at du ikke kan undgå at have en del PHP på hver side du skal bruge ?


Forkert. Men lad mig starte et andet sted.

Uden at have det store kenskab til asp.net vil jeg gætte på at jeg har en lille ide om hvordan ASP.NET (i meget grove hovedtræk) opnår sin adskillelse af forretningslogik og præsentation.

Når asp.net modtager en forespørgsel på en aspx-fil bliver denne fil parset og udfra filen dannes Control-objekter der svarer til de controls der er blevet deklareret i aspx-filen (Labels, TextBoxes, UserControls osv.). De forskellige Control-objekter bliver placeret i en træ-struktur (composite-pattern?) hvor roden bliver Page-objektet der selv er en Control (Page-objektet er sikkert ikke den absolutte rod, men det er en detalje). Når asp.net skal rendere noget HTML-output, har de forskellige controls så selv ansvar for at rendere det ønskede output hvilket - i asp.net's tilfælde - bliver klaret af et HTMLTextWriter-objekt. Dette objekt har metoder så som RenderBeginTag(string tagName), RenderEndTag() osv., der i sidste ende producerer HTML-outputtet (det skal jo komme et eller andet sted fra).

Det er jo ganske smart og betyder at du kan tale med de forskellige Control-objekter igennem din codebehind-file, der jo bare er Page-klassen jeg nævnte i ovenstående paragraf.

Men hvor meget kræver det egentlig for at kunne overføre ovenstående beskrivelse til et andet sprog, som f.eks. PHP? Tja det kræver for det første en xml-parser (aspx-filer er xml-filer). For det andet vil de mest basale OO-funktionaliteter såsom nedarvning, abstrakte-klasser osv. være at foretrække. Og så kræves der egentlig ikke mere. Ud over noget tid til rent praktisk at få skrevet nogle Control-klasser og en HTMLTextWriter-klasse selvfølgelig :)

Og konklussionen? Selvfølgelig kan du opnå den samme adskillelse af præsentation og forretningslogik i PHP som du kan i asp.net.

P.S. Hvis mit indlæg virker lidt ukonkret kan du kigge på PRADO ( http://www.pradosoft.com ), der er et PHP-framework, der kopierer dele af asp.net. Eksempelvis minder PRADOs views MEGET om asp.net's aspx-filer.



Indlæg senest redigeret d. 02.10.2008 08:11 af Bruger #13559
<< < 12 > >>
t