Hvordan kan jeg undgå rodede php filer!?

Tags:    php html programmering

Hej Udviklere!

Jeg bliver hele tiden irriteret på at mine koder bliver ekstremt rodede, især når man skal vise noget PHP, såsom en brugerprofil, på en side der ellers er bygget op i HTML.

Jeg tænkte at der må være nogen der har nogle fif til hvordan man kan undgå uoverskuelig kode når man skal blande PHP og HTML. :B

Mvh. Andreas Voss



Indlæg senest redigeret d. 15.02.2012 23:42 af Bruger #8884
7 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 26 karma
Sorter efter stemmer Sorter efter dato
Der findes vel nogle MVC (Model - View - Controller) PHP frameworks. Der kan gøre det mere overskueligt :) Hvis du ikke allerede benytter dette. Det bliver vel mere overskueligt når tingene er delt op.



Indlæg senest redigeret d. 16.02.2012 00:47 af Bruger #16502
Hvis din kode bliver for stor og uoverskuelig, bør du overveje at inddele den i mindre enheder, fx i flere filer. Der er ikke noget problem i at have et projekt med mange filer, såfremt filerne har nogle sigende navne.
Som tidligere nævnt kan et MVC framework hjælpe lidt til når det kommer til organisering af kode. Inden for hver fil kan det også være en god ide ikke at have for mange linier kode i hver metode.



Som flere er inde på er MVC en god måde at opdele sin kode på. Her handler det primært om at M (data laget) loader data ind i V (visnings laget), og C (controller laget) håndtere indgående requests og udgået respons. MVC er PHP's smarte navngivning for 3-lags modellen. :)

MVC er dog ingen garanti for organiseret kode, og absolut ingen garanti for at man ikke blander for PHP med HTML. :)

Men det gør egentlig heller ikke noget. Man skal dog bare være lidt mere varsom med sin måde at blande PHP og HTML. Den nemmeste standard hvor man kan blande PHP og HTML varsomt er at bruge PHP som et template sprog - nøjagtig som det, det engang var skabt til - PHTML.

Alle template engines som findes i dag udkonkurreres af PHTML. Fordi PHTML er native, og template engines lægger et nyt lag oven på PHP.

Men for at vende tilbage til det reelle spørgsmål, kan det klar anbefales at du som min. opdeler din kode i en PHP fil som står for at læse, behandle og skrive data. Dertil skal høre en template som du loader din data ind i.



MVC er en fin måde at abstrahere data, routing og views væk fra hinanden. Det er et princip der er adopteret fra andre objektorienterede sprog.

Man kan sagtens bruge samme princip uden at binde sig op på objektorienteret kode. Jeg synes personligt tit, at man ender med at overkomplicere tingene med MVC-frameworks.

En fed artikel om emnet fra Rasmus Lerdorf (manden der startede PHP) http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html

Artiklen handler i grovetræk om, hvorfor han mener at MVC-frameworks kan være unødvendigt komplicerede, og hvordan man kan opnå samme struktur, uden at give afkald på kontrol og sine egne workflows.

Jeg bruger som regel en approach der minder meget om den han viser.

I grove træk så opbygger jeg mine PHP apps på følgende måde:

Jeg har et public dir, som er det eneste folk der besøger siden kommer ind i. Der i ligger alle mine CSS og js filer samt alle billeder. En .htaccess rewriter alle requests der ikke er billeder til index.php i public. Index.php er min bootstrap fil - som alt efter request kalder den passende "controller" fil.

Udover public dir'et har jeg så en mappe til de såkaldte "controllers" - for nu at blive i MVC terminologien - som alt efter den øvrige del af requesten kalder forskellige funktioner. De forskellige funktioner laver den nødvendige data behandling og henter et view fra et template dir. Der udover findes en mappe til libraries - funktioner som bruges på tværs af "controllers".

Afhængigt af projektets omfang bliver der tillige lagt et cache/tmp dir ind og måske endda en mappe til at holde shellscripts til vedligeholdelse.

Jeg bruger ikke smarty eller andre template-frameworks. Det er unødvendigt i min optik, da php faktisk er et udenmærket templatesprog. :-)

(edit: at bruge MVC framworks og OOP er fint - så længe det ikke bare er for at samle på buzzwords)



Indlæg senest redigeret d. 16.02.2012 13:58 af Bruger #17015
Det vil jeg læse op på.

Tak! :)



Ellers kan du lave klasser og metoder der udskriver HTML for dig. På den roder du ikke din logik sammen med udskrivningen af alt HTML'en.



der er også et template systemer så som smarty
http://www.smarty.net/
hvis du ik gider skrive en selv :)


ellers er jeg enig med Asker, MVC er et godt bud.



t