Gå til innhold

Skille presentasjon og kode


Anbefalte innlegg

Jeg har forstått at det skal være mulig å programmere 100% objektorientert i php, men jeg forstår ikke helt hvordan det skal gå til. I java er det greitt, for da tenker jeg at alle metodene tar tak i hverandre til en lang kjede helt til programmet er slutt, men i php fungerer ikke denne tankegangen, siden "et nytt program" starter for hver side jeg lager. (med mindre jeg mellomlagrer objekter fra side a til side b/c/.../n i sessions, hvilket jeg ikke anser som særlig lurt).

 

Så spørsmålet blir da - er dette feil tilnærming på skille presentasjon og kode i php? (lang kjede osv)

 

Eksempelvis... Jeg holder på med et skript for bildehovring, http://cruella.lostdot.com/gallery2/test3.php. Dette skriptet bruker en klasse, directoryReader, som eneste den gjør er å lese en mappe og sende ut filer av typen <filtype>. Kunne likegjerne vært implementert som en funksjon. Videre. Hadde en klasse som het ImageHover, som eneste den gjorde var å skrive ut html og css, noe overkill det også, siden html og css likevel måtte settes. Det å skrive html og css rett i ImageHover fungerer ikke, siden jeg bruker ulik css og html alt etter hvilket prosjekt jeg holder på med (versjon 3 så langt).

 

Så kunne jeg tenkt på arv. ImageHoverLeft extends ImageHover osv... men det ville blitt en fullstendig merkelig, for da måtte jeg hatt en subklasse for hver subtype (ImagehoverRight/top/bottom/ osv)

 

Så hvordan kan man skille logikk og presentasjon i slike prosjekter?

Blir veldig takknemlig for svar.. dette bugger meg skikkelig

Lenke til kommentar
Videoannonse
Annonse

Dette er noe som ikke er så lett å finne gode ressurser på på nettet, så derfor vil jeg anbefale deg noen bøker. Særlig siden jeg ikke orker sitte her og skrive et superutfyllende svar når det er så utrolig fint vær + fotball-vm :)

 

PHP 5 Objects, Patterns and Practice

PHP|Architect's Guide to PHP Design Patterns

The PHP Anthology: Object Oriented PHP Solution, Volume 1

The PHP Anthology, Volume II: Applications

 

Og ja, det er mulig å skrive 100% OOP i PHP, sånn rent bortsett fra at du antageligvis ender opp med en front/page/application -controller som kjører to linjer:

$foo = BarController;
$foo->execute();

 

Men såpass får man tåle :)

 

Litt mer spesifikke spørsmål kan jeg svare litt mer spesifikt på om du vil.

Lenke til kommentar
Hvorfor er det ikke særlig lurt å lagre objekter i session? blir ikke det mer effektivt enn å bygge opp hele objektstrukturen for hver side som vises?

6281636[/snapback]

 

Det er iofs greit å lagre objekter i sesjonsvariabler, men husk å ikke lagre ressurser da.

Dessuten må du passe på så ikke halvparten av objektene dine plutselig er avhengig av en superglobal $_SESSION array.

Objekter må også opprettes på nytt ved hver sidevisning, det er umulig å gjøre noe med, men om objektene er avhengige av spørringer eller annen modifikasjon så sparer du jo selvsagt den biten ved å lagre data.

 

Det du kan gjøre er å lage et system for å "persist" (kommer ikke på noe godt norsk ord) objekter i sesjonen. Kanskje ta en titt på noen av de ferdige bibliotekene som finnes for persistens av objekter til fil/database.

Lenke til kommentar
Så hvordan kan man skille logikk og presentasjon i slike prosjekter?

Blir veldig takknemlig for svar.. dette bugger meg skikkelig

6278593[/snapback]

Det du holder på med er vel strengt tatt ikke å skille presentasjon og logikk, men heller å lage et objektorientert presentasjonslag.

 

Jeg vil si dette er en blindgate, og foreslår at du holder deg til templates (og subtemplates) for å lage websider.

PHP skulle være et ok templating-språk i seg selv, om du har selvkontroll nok til å ikke blande inn forretningslogikk i presentasjonen.

 

Foreslår at du ser på MVC-patternet, som bla.a. beskrives her: http://en.wikipedia.org/wiki/Model-view-controller

Lenke til kommentar
Det du holder på med er vel strengt tatt ikke å skille presentasjon og logikk, men heller å lage et objektorientert presentasjonslag.

 

Jeg vil si dette er en blindgate, og foreslår at du holder deg til templates (og subtemplates) for å lage websider.

6282355[/snapback]

 

Det finnes absolutt caser der det egner seg med et eget objektorientert presentasjonslag. Som en del av et rammeverk som brukes til å generere haugevis med forskjellige lister/statistikk i forskjellige formater ville jeg nok ikke valgt templating.

 

Men generelt sett så egner templating seg mye bedre.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...