Atmoz | blogg

Personlig blogg om webutvikling

Få kontroll på brukergrensesnittet i MVC

with one comment

Jeg tenkte jeg skulle skrive litt om å bruke alternativ syntaks i view, “brukergrensesnittet” eller “HTML-mal” på godt norsk (alt ettersom), i det populære designmønsteret MVC. Men først en liten innføring i MVC, så dere som eventuelt er gal nok til å lese i bloggen min vet hva det går i.

MVC-modellen er delt inn i tre deler: Model, View og Controller. Det går ut på å dele inn din suppe av en kode inn i tre deler: data, visning og logikk. Poenget med oppdelingen er å gjøre koden enklere å vedlikeholde og bygge videre på. Eksempelvis en nettavis: artikler er data (model), HTML-kode og RSS-feeds som viser artikler er visning (view) og koden som får alt dette til å henge i sammen er logikken (controller). Det kan sammenlignes med et klesskap: Om alle dine klær ligger helt tilfeldig er det jævlig stress å finne den ene sokken du leter etter. Derfor er det vanlig praksis å sortere klær etter type. Sokker og undertøy for seg, skjorter og gensere for seg, osv. You get the point.

Visningen (view) skal ikke inneholde logikk. Visningen skal inneholde minst mulig PHP-kode. Den skal nemlig kunne brukes av folk som ikke kan PHP – designere f.eks. Det er imidlertid lett å la seg friste. Med alternativ syntaks i PHP kan man enklere holde seg selv i nakkeskinnet.

Jeg spinner videre på eksempelet om en nettavis og vi begynner med et nasty eksempel på hvordan man ikke skal gjøre det:

Som du sikkert ser skal dette forestille en liten del av noe som tilsynelatende skriver ut en liste med artikler. Om du ikke hører flyalarmen enda, så er det bra du leser dette. Dette er et eksempel på for mye PHP. Det er vanskelig å redigere HTML-en som er most inn i PHP-koden, og prøver man seg er det stor sannsynlighet for å få hodepine. Inntrykk (indentation) er heller ikke formet etter HTML-koden, men etter PHP-koden.

Så ser vi hvordan det ser ut med “alternativ syntaks” (finnes sikkert et bedre ord for det):

Legg merke til at jeg ikke starter med <?php. Der hvor vi ha PHP bruker vi PHP-tags. Det som er alternativ syntaks her er måten foreach-løkken er åpnet og lukket på. Ikke spesielt pent i vanlig PHP-kode, men til HTML-maler er det perfekt. <?php endforeach; ?> er mye mer lettlest og forståelig enn <?php } ?>. Dette kan du bruke på if- og switch-setninger, while- og for-løkker også. Nå kan du lettere lage inntrykk som følger HTML-koden og ikke PHP-koden.

Trikset er å følge disse reglene når du lager HTML-maler (view):

  1. Bruk bare alternativ syntaks i PHP-koden.
  2. PHP-tags starter og slutter på samme linje.
  3. PHP inneholder ikke HTML.
  4. Kode som ikke klarer å følge disse enkle reglene har ikke noe her å gjøre.

All annen kode skal inn i model og controller – det er den koden man kaller logikk (eller data), og det har ingenting å gjøre i view-delen av MVC-modellen. Følg disse reglene og du er sikker på at du holder fingrene av fatet – samtidig som du lager lettlest og oversiktlig kode som personer med minimal PHP-kunnskaper kan redigere.

NB! Jeg har ikke funnet noen smart måte å legge inn kode i bloggen enda, <pre> ser bare tragisk ut og jeg er lat, så løsningen ble å klippe ut et bilde fra tekstbehandleren. :P Av den grunn måtte jeg kutte ut htmlspecialchars() – det tok alt for mye plass!

Mer lesestoff:

Advertisement

Written by atmoz

18.08.08 at 23:48

Posted in PHP

One Response

Subscribe to comments with RSS.

  1. Najs

    PerArneSaab

    19.08.08 at 00:04


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.