Een ontzettend breed onderwerp, met een enorme variatie aan meningen. Daar is dit topic dan ook op gebaseerd. Maar wat uiteindelijk nog belangrijker is, is uiteraard de argumentatie achter de mening. Mijn eerste poging tot een groot discussie topic.
Ik ben van plan om binnenkort aan de slag te gaan met een zelf geschreven CMS in PHP. Uiteraard zijn er tal van (gratis) oplossingen zo beschikbaar, maar dit project dient boven alles om mijn eigen 'skills' in PHP, CSS en Javascript wat te verbreden. Dus hoewel hier en daar wat knutselen best is toegestaan, richt ik me erop een bruikbaar (of beter nog, goed) product te zetten. Maar nog voor ik goed en wel begonnen ben, zit ik al met een hele belangrijke (en helaas ook hele ruime) vraag.
Waar moet men rekening mee houden, kijkende naar de architectuur van o.a. de database, de 'fysieke' bestandsindeling op de harde schijf, en last but not least, binnen de code zelf?
Natuurlijk zijn de vragen hierboven klein, gericht, en makkelijk met een google search te 'beantwoorden'. Maar deze voorbeeldvragen zijn uiteraard maar een hele kleine greep uit de punten die je voorbij vliegen tijdens het werk aan zo'n groot project. Veel te veel om in de topicstart op te nemen, maar dat betekent uiteraard niet dat ik niet benieuwd ben naar jullie visie!
Nogmaals, jullie beargumenteerde mening telt
Een lijstje van grote bekende CMS pakketten is zo te vinden, maar voegt in dat opzicht absoluut niks toe. Daarentegen, als een bepaald CMS pakket een aparte aanpak hanteert, of je punten prachtig demonstreert, is een linkje altijd welkom.
Edit:
Iets bestaands als basis gebruiken helpt in dit opzicht ook niet, omdat je dan natuurlijk vastzit aan een reeds bestaande database-, directory- en codestructuur. Daarom iets volledig nieuws, een leerprojectje dus, maar wel zo opgezet dat het in theorie verkocht zou kunnen worden. Dit gaat uiteraard niet gebeuren, maar die mindset helpt wel om slordige stukjes code (inline PHP-code of zelfs SQL queries) tegen te gaan.
Het uiteindelijk doel is dan ook vooral om netjes en correct te programmeren, iets dat af en toe best een uitdaging kan zijn voor iemand met mijn achtergrond, en ik mezelf middels dit projectje aan wil leren. het is natuurlijk ook een mooie kans om wat dieper in de enorme function base van PHP te duiken, maar dat is bijzaak. Daarom probeer ik dit topic te beperken tot de architectuur achter zo'n (groot) blok code. Met het 'programmeren' zelf (lees: code tikken) heb ik geen problemen.
Ik ben van plan om binnenkort aan de slag te gaan met een zelf geschreven CMS in PHP. Uiteraard zijn er tal van (gratis) oplossingen zo beschikbaar, maar dit project dient boven alles om mijn eigen 'skills' in PHP, CSS en Javascript wat te verbreden. Dus hoewel hier en daar wat knutselen best is toegestaan, richt ik me erop een bruikbaar (of beter nog, goed) product te zetten. Maar nog voor ik goed en wel begonnen ben, zit ik al met een hele belangrijke (en helaas ook hele ruime) vraag.
Waar moet men rekening mee houden, kijkende naar de architectuur van o.a. de database, de 'fysieke' bestandsindeling op de harde schijf, en last but not least, binnen de code zelf?
- Is een template engine beter dan, bijvoorbeeld, een statische html pagina met een php require() erin?
- Is het nuttig om geparste bestanden als HTML te cachen, evt. server-side, of roep je direct PHP pagina's aan en vertrouw je op evt. caching aan client side?
- Als je meertaligheid in wilt bouwen, verplicht je de beheerder dan om elke pagina in elke taal af te leveren? Hoe vang je ontbrekende talen af? Of vind je dat het mogelijk moet zijn om per taal een compleet afwijkende paginastructuur aan te houden, en zo bijna meerdere websites te onderhouden?
- Hoe zou een CMS om moeten gaan met niet-statische pagina's (zoals een fotogallerij, webshop, nieuwsberichten pagina), en eventuele koppelingen hiertussen (linken naar een fotogallerij vanuit een nieuwsbericht)? Of zou een CMS zo ver niet moeten gaan, en zich richten op statische content / nieuwsberichten?
- Hoe zal - zeer globaal - je backend eruit zien? Gooi je alles in een database? Hoe hou je rekening met toekomstige uitbreidingen (zoals een nieuwe contentmodule, b.v. een reactiesysteem voor je nieuwsberichten) in zowel je database als directory tree?
Natuurlijk zijn de vragen hierboven klein, gericht, en makkelijk met een google search te 'beantwoorden'. Maar deze voorbeeldvragen zijn uiteraard maar een hele kleine greep uit de punten die je voorbij vliegen tijdens het werk aan zo'n groot project. Veel te veel om in de topicstart op te nemen, maar dat betekent uiteraard niet dat ik niet benieuwd ben naar jullie visie!
Nogmaals, jullie beargumenteerde mening telt
Edit:
Om even te verduidelijken; Ja, het is een leerproject. Ik heb expres voor een CMS gekozen omdat de applicaties die ik tot nu toe gemaakt heb redelijk standvast van aard zijn; vaak zijn ze gericht op een enkele klant, zonder plannen om deze ooit nog eens te verkopen. In zo'n situatie is het nogal makkelijk om de gedachte 'zolang het maar werkt' aan te houden. Weinig tot geen onderhoud betekent dat het snel verleidelijk is om maar even snel wat in elkaar te zetten.Zijn er specifieke redenen waarom je zelf een CMS wil maken? Is het een leerproject of wil je het ook echt daadwerkelijk gebruiken? Er zijn nogal wat dingen die een CMS een goed CMS maken - in mijn ogen is dat (uiteraard) security, gebruiksvriendelijkheid, clean URL's, SEO, enz.
Iets bestaands als basis gebruiken helpt in dit opzicht ook niet, omdat je dan natuurlijk vastzit aan een reeds bestaande database-, directory- en codestructuur. Daarom iets volledig nieuws, een leerprojectje dus, maar wel zo opgezet dat het in theorie verkocht zou kunnen worden. Dit gaat uiteraard niet gebeuren, maar die mindset helpt wel om slordige stukjes code (inline PHP-code of zelfs SQL queries) tegen te gaan.
Het uiteindelijk doel is dan ook vooral om netjes en correct te programmeren, iets dat af en toe best een uitdaging kan zijn voor iemand met mijn achtergrond, en ik mezelf middels dit projectje aan wil leren. het is natuurlijk ook een mooie kans om wat dieper in de enorme function base van PHP te duiken, maar dat is bijzaak. Daarom probeer ik dit topic te beperken tot de architectuur achter zo'n (groot) blok code. Met het 'programmeren' zelf (lees: code tikken) heb ik geen problemen.
[ Voor 21% gewijzigd door Duroth op 25-07-2009 00:39 ]