model of niet?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ozzie PHP

Ozzie PHP

02/01/2013 10:28:15
Quote Anchor link
Hoi mensen,

Een vraagje. Ik ben een (op zichzelf staande) controller class aan het maken die iets heel simpels doet. Namelijk kijken of het subdomein van een URL voldoet aan een bepaalde waarde. Zo ja, dan doorsturen naar een andere url.

Nu gaat het maar om een stuk of 3 subdomeinen die ergens naar moeten worden doorgestuurd:
subdomein1.mijnsite.nl
subdomein2.mijnsite.nl
subdomein3.mijnsite.nl

Alle andere subdomeinen moeten worden genegeerd.

Die controller doet dus niet veel meer dan kijken wat de opgevraagde URL is. Komt het subdomein overeen met een van de voorgedefinieerde subdomeinen dan doorsturen naar andere url. Komt het niet overeen, dan niks doen.

Nu vraag ik me af... zal ik die 3 subdomeinen in dezelfde controller class, als property, opslaan? Of misschien in een config (.ini) bestandje? Of behoor je die subdomeinen via een model op te halen? Omdat het er maar een stuk of 3 zijn, vraag ik me af of ik daar dan speciaal een model voor moet aanmaken?
 
PHP hulp

PHP hulp

23/09/2021 11:15:35
 
Moose -

Moose -

02/01/2013 10:52:55
Quote Anchor link
Hangt er vanaf of je denkt dat er in de toekomst nog veel meer bij komen. Als het alleen deze 3 zijn, en blijven, zou je er in principe gewoon een constante van kunnen maken. Een model kan je aanmaken als je het graag wilt laden vanuit de database. In een .ini bestand kan ook, maar dan heb je weer een extra handeling, wat hiervoor volgens mij niet hoeft
 
Ozzie PHP

Ozzie PHP

02/01/2013 10:59:07
Quote Anchor link
Thanks voor je reactie! Ik verwacht niet dat er in de toekomst nog veel bijkomen.

Gebruik je normaal gesproken een model alleen om iets uit de database te halen?
 
Wouter J

Wouter J

02/01/2013 11:01:26
Quote Anchor link
Ja, alleen is een database een enorm breed begrip :) Je hebt SQL databases, file databases, session databases, array databases, ect.
 
Erwin H

Erwin H

02/01/2013 11:06:51
Quote Anchor link
Regel 1 van een class: zorg dat elke class altijd maar 1 doel heeft.

Als je in je controller zowel gaat controleren of de waarde overeenkomt met bepaalde toegestane waardes, alsook gaat bepalen wat de toegestane waardes zijn, dat doet hij dus twee dingen. Oftewel niet in de controller zetten.
Gewijzigd op 02/01/2013 11:07:38 door Erwin H
 
No One

No One

02/01/2013 11:10:19
Quote Anchor link
en dan nog..wordt het net zoiets als hyves heeft? dus username.hyves.nl? of zijn het echt 3 sites met elk compleet verschillende content? host je die zelf, of is het de bedoeling dat: google.domein.nl => google.nl ??

kortom...het is niet gewoon op zoek naar een model, maar naar een model dat past bij je wensen en eisen...
 
Ozzie PHP

Ozzie PHP

02/01/2013 11:13:44
Quote Anchor link
@Erwin, kun je dit aub toelichten? De controller moet toch weten wat de waardes zijn, om vervolgens te kunnen doorsturen? Hoe zou ik het volgens jou dan het beste kunnen doen?

@Hense: nee, niet zoals hyves. Het redirect naar sites die ik zelf host.
 
No One

No One

02/01/2013 11:17:07
Quote Anchor link
@Ozzie...heb je apache? heb je toegang tot de configuratie voor het opzetten van bijvoorbeeld vhosts? je zou ook simpel een htaccess bestandje neer zetten die je laat redirecten...geen php voor nodig, geen controller en maximaal 5 regeltjes
 
Moose -

Moose -

02/01/2013 11:17:22
Quote Anchor link
Erwin H op 02/01/2013 11:06:51:
Regel 1 van een class: zorg dat elke class altijd maar 1 doel heeft.

Als je in je controller zowel gaat controleren of de waarde overeenkomt met bepaalde toegestane waardes, alsook gaat bepalen wat de toegestane waardes zijn, dat doet hij dus twee dingen. Oftewel niet in de controller zetten.


Hier ben ik het niet mee eens, volgens mij haal je hier methodes en classes door mekaar. Dit wordt denk ik een soort van dispatch controller. Die kan best kijken of hij mag forwarden naar een nieuwe url én het forwarden zelf
 
Erwin H

Erwin H

02/01/2013 11:23:27
Quote Anchor link
Ja, de controller moet inderdaad de waardes weten en moet die ergens vandaan krijgen. Maar het is niet aan de controller om die te bepalen. Als jij de waardes dus in de controller plaatst als properties, dan zal je de controller fysiek moeten aanpassen als je de waardes wilt aanpassen.

Echter, als de controller de waardes krijgt (bijvoorbeeld in een array) vanuit een ander object, dan kan je deze controller een volgende keer ook weer gebruiken. Je hoeft dan alleen de class aan te passen die de waardes levert (en dat klopt, immers de waardes zijn anders in een volgende applicatie).

En dan waar moeten de waardes vandaan komen: uit een model. Daarbij moet je in mijn ogen het model niet gelijkstellen aan de database. Het model levert de data. Hoe en waar het vandaan komt is daarbij niet van belang (in elk geval niet voor de controller). In deze applicatie, omdat het er erg simpel is, zou je een model class kunnen schrijven die maar 1 methode heeft en die ene methode geeft een array terug met 3 waardes. Een volgende keer schrijf een model class die er een hele database infrastructuur achter heeft zitten. Weer een volgende keer krijgt het model de waardes van een externe website. Heck, desnoods zit er een kabouter achter die elke keer de waardes uit zijn hoofd inklopt. Als de model class maar elke keer dezelfde interface implementeert is er niets aan de hand en krijgt de controller gewoon de waardes die die nodig heeft.
 
Ozzie PHP

Ozzie PHP

02/01/2013 11:23:42
Quote Anchor link
@Henze: ja, ik heb Apache. Maar het gaat in dit geval om (sub)domeinen die nog niet gekoppeld zijn. Beetje lastig uitleggen. Maar dit is wel de handigste manier.

@Not Moose: precies zoals jij het omschrijft. Een methode mag inderdaad maar 1 ding doen.

@Erwin: ja, daar zit ook wel weer wat in. Maar de vraag is of je het hier "moet" doen, omdat het zo weinig subdomeinen zijn.
Gewijzigd op 02/01/2013 11:25:15 door Ozzie PHP
 
Erwin H

Erwin H

02/01/2013 11:26:34
Quote Anchor link
Not Moose op 02/01/2013 11:17:22:
Hier ben ik het niet mee eens, volgens mij haal je hier methodes en classes door mekaar. Dit wordt denk ik een soort van dispatch controller. Die kan best kijken of hij mag forwarden naar een nieuwe url én het forwarden zelf

Nee, im mijn ogen absoluut niet. De reden is heel erg simpel. Als je deze functionaliteit allemaal in 1 class stopt kan het prima doen wat je nu wilt. Echter, wil je de volgende keer (bij een andere applicatie) ook kunnen forwarden, maar in een heel andere situatie, dan kan je je code niet nog een keer gebruiken. Het hele idee van OOP is dat je functionaliteiten scheidt, zodat je componenten kunt hergebruiken. Essentieel is dan wel dat je functionaliteit goed gescheiden houdt.



Toevoeging op 02/01/2013 11:33:20:

Ozzie PHP op 02/01/2013 11:23:42:
@Erwin: ja, daar zit ook wel weer wat in. Maar de vraag is of je het hier "moet" doen, omdat het zo weinig subdomeinen zijn.

Ja. Ik zou er niet eens over nadenken. Zie ook mijn reactie hierboven. Het gaat niet om de situatie nu. Als je alleen naar de situatie nu kijkt kan je het heel simpel in spaghetti code in 2 of 3 regels doen. Dat is niet wat je wilt, je wil het in OOP, doe het dan goed in OOP.
 
Wouter J

Wouter J

02/01/2013 11:34:21
Quote Anchor link
Goed, ik begrijp beide kanten. Erwin lijkt het alleen wat moeilijker te maken, wat volgens mij niet nodig is. Is het nu niet zo dat je nu het probleem opschuift? Als je het in de controller opslaat hoef je alleen de controller aan te passen, als je een model maakt en daar de info van de controller instopt dan moet je de model aanpassen. Het lijkt me hetzelfde, behalve dat je een andere klasse hebt die je moet aanpassen?
 
Erwin H

Erwin H

02/01/2013 11:35:24
Quote Anchor link
Ozzie PHP op 02/01/2013 11:23:42:
@Not Moose: precies zoals jij het omschrijft. Een methode mag inderdaad maar 1 ding doen.

Nee, dan heb je het over functioneel programmeren, niet over OOP. Binnen OOP zijn het de classes die je herbegruikt, niet de functies (methodes). Daarom gaat het erom dat je binnen OOP de functionaliteiten scheidt tussen de classes, niet tussen de functies.
 
Ozzie PHP

Ozzie PHP

02/01/2013 11:36:32
Quote Anchor link
In dit specifieke geval is het wellicht overkill, maar van de andere kant snap ik ook wel wat Erwin zegt over het scheiden van taken (bijv. het forwarden in een aparte class stoppen). En ergens heeft ie daar wel een punt. Ik heb in ieder geval even genoeg stof tot nadenken. Ik kan weer vooruit. Thanks allemaal!
 
Erwin H

Erwin H

02/01/2013 11:38:41
Quote Anchor link
Wouter J op 02/01/2013 11:34:21:
Goed, ik begrijp beide kanten. Erwin lijkt het alleen wat moeilijker te maken, wat volgens mij niet nodig is. Is het nu niet zo dat je nu het probleem opschuift? Als je het in de controller opslaat hoef je alleen de controller aan te passen, als je een model maakt en daar de info van de controller instopt dan moet je de model aanpassen. Het lijkt me hetzelfde, behalve dat je een andere klasse hebt die je moet aanpassen?

Noem het zoals je wilt. Waar ik naar kijk is hoe je het binnnen een grotere applicatie zou doen. Als je een omgeving hebt waarbinnen de mogelijke correcte waardes van meer dingen afhankelijk zijn en dus niet simpel uit te schrijven zijn, waar zou je de waardes dan bepalen? Als dan je antwoord is: in de controller, dan kan je het nu ook in de controller doen. Als je antwoord dan is: in een model, dan zou ik het nu ook in het model doen.
 
Moose -

Moose -

02/01/2013 11:39:40
Quote Anchor link
Erwin H op 02/01/2013 11:35:24:
Ozzie PHP op 02/01/2013 11:23:42:
@Not Moose: precies zoals jij het omschrijft. Een methode mag inderdaad maar 1 ding doen.

Nee, dan heb je het over functioneel programmeren, niet over OOP. Binnen OOP zijn het de classes die je herbegruikt, niet de functies (methodes). Daarom gaat het erom dat je binnen OOP de functionaliteiten scheidt tussen de classes, niet tussen de functies.



Daarom vroeg ik ook of het vaker zou voorkomen. Mocht je een gigantische waslijst hebben van data die geforward moet worden dan zou ik het zelf opslaan in de database. Maar aangezien het maar 3 domeinen zijn kan je dit ook gewoon in een constante opslaan. Je kunt ook overabstraheren he
 
Erwin H

Erwin H

02/01/2013 11:50:43
Quote Anchor link
Om dan weer even dichter bij elkaar te komen, ik heb niets tegen het opslaan in een constante. Voor deze simpele applicatie kan dat absoluut de beste optie zijn. Waar het mij meer om gaat is hoe je die constantes inleest in de controller. Hoe ik dat zou doen heb ik denk ik genoeg duidelijk gemaakt inmiddels :-)
 
No One

No One

02/01/2013 11:51:08
Quote Anchor link
@Ozzie, als je wil bepalen dat subdomein.domein.nl verwijst naar een ander subdomein.domein.nl of username.somehostingsite.nl/~personalsite/football of waar dan ook, maakt niet uit..en als je maar 3 sites hebt is dit op het moment het snelst...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.