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.htmlArtiklen 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