Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP] Framework and scheiding tussen front and backend

Pagina: 1
Acties:
  • 578 views sinds 30-01-2008
  • Reageer

  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Hallo,

Ik ben bezig om een soort framework te maken waarop ik later een CMS wil bouwen. In dit CMS moet de mogelijkheid komen om modules te installeren die in de backend beheer mogelijkheden geven en in de frontend gepresenteerd kunnen worden.
Het gaat nu aardig goed en ik heb nu in principe een framework waarop je eenvoudig een applicatie kan bouwen. Ik zit nu alleen te denken hoe ik het wil gaan doen met het scheiden van de frontend en de backend.
In principe heb ik 1 index.php waarop alle requests binnenkomen. Deze zoekt aan de hand van de parameters de juiste controller, klasse en functie en geeft hier de parameters aan door. Elke controller en functie kan weer een apparte template aanroepen. Nu denk ik aan een aantal opties:

Optie 1:
De mogelijkheid maken om meerdere sites te hebben in het CMS. Doormiddel van een andere index.php of een parameter die meegegeven wordt aan de index.php wordt of de frontend of de backend controllers geladen.

Optie 2:
Ik maak bijvoorbeeld 1 news controller met een functie view() create() update() delete(). In elke functie is bepaald of ik de frontend of de backend toon (Ik kan namelijk opgeven welke template er geladen moet worden). Verder kijk ik bij create() bijvoorbeeld of te gebruiker is ingelogd.

Optie 3:
2 aparte sites maken die gebruik maken van het framework. Nadeel is dan dat de modules bijvoorbeeld op 2 plaatsen geinstalleerd moeten worden.

Optie 4:
Een admin controller maken die alles voor de backend afhandeld. Probleem hierin is: hoe sluit ik dit aan met de modules.

Optie 4:
????

Ik ben benieuwd of jij nog andere opties hebt. Ik heb ook gekeken naar bijvoorbeeld Ruby on Rails en Zend. En naar mijn idee is het de bedoeling om daar 1 framework te gebruiken. De frontend en backend zijn eigenlijk alleen maar andere presentaties van hetzelfde systeem.

Wat lijkt jou logisch? en hoe heb jij dit opgelost?

  • ReverendBizarre
  • Registratie: December 2001
  • Laatst online: 24-03-2021
Lijkt mij meer een topic voor het Software Architecture forum.

  • emkedouwe
  • Registratie: September 2001
  • Laatst online: 26-11-2021
Kan deze verplaatst worden dan ? :)

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:06

Creepy

Tactical Espionage Splatterer

Ja hoor, dat kan :)
@ IrishMaiden: we zien liever dat je zoiets meldt via een TR i.p.v. in het topic zelf, scheelt weer wat "vervuiling".

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Misschien kun je ook nog wat inspiratie putten uit cakePhp. Daar gaan ze, uit mn hoofd, op de volgende manieren om met de punten die je noemt:

1 + 3: Meerdere sites maken, dan framework kopieren naar een nieuwe DocumentRoot. Dit doe je in principe ook bij een 'normale' site.
Als er een deel van je framework echt helemaal site-onafhankelijk is, kun je wel dat stuk wél onderbrengen op een gedeelde locatie buiten je webroot.
Wat je wilt voorkomen is een url als:
www.site.nl/index.php/tennisclub/users
dan heb je liever:
www.site.nl/tennisclub/index.php/users

2 + 4: Frontend/Backend gebeuren: in cake kun je een url laten voorafgaan door iets als /admin/'. De controller weet dan dat de aangeroepen functie een admin ding is. Lijkt op je eigen idee, al zou ik niet alleen aan de hand van de user bepalen of er een backend view moet worden gebruikt.
vb:
index.php/users/create wijst naar UsersController->create()
index.php/admin/users/create wijst naar UsersController->admin_create()
De controller-dispatcher (hm, is dit de goede term? oftwel je index.php dus) zorgt voor dejuiste verwijzingen.
Je kunt er dan voor kiezen om in de usercontroller create() niet te definieren, maar wel admin_create(). Uiteraard moet hier nog wel ergens authenticatie controle tussen. Het voordeel is dat je maar één controller nodig hebt voor zowel de gewone gebruiker als de administrator.


Tot zover mijn ideeën/bijdrage. Ben geen grote expert en ik weet ook niet of het wel helemaal klopt wat ik zeg (over cakePhp ook), maar enfin. :)

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

zwippie schreef op woensdag 17 mei 2006 @ 15:16:
1 + 3: Meerdere sites maken, dan framework kopieren naar een nieuwe DocumentRoot. Dit doe je in principe ook bij een 'normale' site.
Als er een deel van je framework echt helemaal site-onafhankelijk is, kun je wel dat stuk wél onderbrengen op een gedeelde locatie buiten je webroot.
Wat je wilt voorkomen is een url als:
www.site.nl/index.php/tennisclub/users
dan heb je liever:
www.site.nl/tennisclub/index.php/users
Dis is ook de manier hoe we op mijn vorige werk werkten. Daar hebben we een zelf ontwikkeld framework. Door middel van een Ant scriptje maken we er een nieuwe Jar van en de wijziging wordt doorgevoerd naar alle applicaties op het moment dat daaraan verder wordt gewerkt. Is wel een J2EE framework, maar dat boeit niet, het kopieren van die bestanden hoeft niet in een archive, maar je kunt ook gewoon een stel mappen met een bat bestandje kopieren.

Oh ja, die (gekopieerde) bestanden moeten wel in je cvs komen als je met versiehistorie werkt. Een specifieke versie van je framework hoort namelijk bij een specifieke versie van je applicatie.
zwippie schreef op woensdag 17 mei 2006 @ 15:16:
2 + 4: Frontend/Backend gebeuren: in cake kun je een url laten voorafgaan door iets als /admin/'. De controller weet dan dat de aangeroepen functie een admin ding is. Lijkt op je eigen idee, al zou ik niet alleen aan de hand van de user bepalen of er een backend view moet worden gebruikt.
vb:
index.php/users/create wijst naar UsersController->create()
index.php/admin/users/create wijst naar UsersController->admin_create()
De controller-dispatcher (hm, is dit de goede term? oftwel je index.php dus) zorgt voor dejuiste verwijzingen.
Je kunt er dan voor kiezen om in de usercontroller create() niet te definieren, maar wel admin_create(). Uiteraard moet hier nog wel ergens authenticatie controle tussen. Het voordeel is dat je maar één controller nodig hebt voor zowel de gewone gebruiker als de administrator.
Ik denk dat je zoekt naar de term Front controller.
Zie: http://java.sun.com/bluep...erns/FrontController.html
Allemaal J2EE patterns, maar grotendeels ook bruikbaar in PHP. Ongeveer voor alle zaken die bij applicatieontwikkeling komen kijken, staat er een oplossing, hoewel de meeste business logic patterns on mijn optiek niet nodig zijn in PHP of alleen maar overhead zijn voor normale applicaties.
Zie link: http://java.sun.com/bluep...terns/Patterns/index.html

Fat Pizza's pizza, they are big and they are cheezy

Pagina: 1