Hi peepz,

Ik ben een Request class aan het maken. Via deze class kan ik bijv. het domein van de opgevraagde URL opvragen, of het subdomein, en of het een beveiligde (https) verbinding betreft. De gegevens haal ik op uit de $_SERVER array. Nu had ik gewoon allemaal public funtcions gemaakt. Echter... ik realiseer me ineens dat gedurende 1 request de $_SERVER array altijd hetzelfde is. Het zou dan raar zijn als ik telkens als ik de Request class nodig heb "new Request()" zou doen.

Nu vraag ik me af wat volgens jullie de beste oplossing is. Ik zou een singleton kunnen maken, zodat je niet "$request = new Request()" doet, maar "$request = Request::getInstance()". Wat ik ook kan doen is iedere functie in de Request class static maken, zodat ik het domein bijv. als volgt opvraag: $domain = Request::getDomain();

Wat vinden jullie? En waarom?
Wanneer zou je NIET createfromglobals willen gebruiken? Is toch makkelijker dan alles handmatig meegeven?

Op momenten dat je geen gebruik van de superglobals kunt/wilt maken, bijv. in een test omgeving of in een subrequest...
hmmm, okeej... maar als je dan een subrequest uitvoert... maak je dan opnieuw een request object aan? Maar dat kan toch niet, want $_SERVER, $_POST etc. is dan toch nog steeds hetzelfde?
Ja, en daarom maak je bij een subrequest je eigen superglobals en daarom kun je dus niet createFromGlobals gebruiken.
Euh... je eigen superglobals maken? En dat zou je dan doen omdat... ??
Ozzie PHP op 04/01/2013 19:55:01

Euh... je eigen superglobals maken? En dat zou je dan doen omdat... ??


omdat:

Not Moose op 04/01/2013 18:55:45

Bijvoorbeeld bij het testen. Als je een GET, POST, PUT, DELETE request wil testen, is het handig dat je een setRequestMethod functie hebt


Ah oke...
Maar afgezien van het testen zie ik ook het nut niet van een subrequest
Oh oké, haha...

Maar dat vind ik dus het lastige. Ik wil een simpel framework bouwen... en dan vraag ik me dus ook af waar ik dan die subrequests voor nodig zou hebben... en als ik dan al een subrequest zou hebben, waarvoor zou ik dan een nieuw request object moeten aanmaken.

Ik wil vooral zo effectief mogelijk programmeren en niet "programmeren om het programmeren". Testen ga ik niet doen, dus vandaar mijn vraag of ik de constructor dan niet gewoon private zou maken.
Oké, dan laten we het hele subrequest verhaal varen. Alsnog moet je je OO applicatie niet dichtbouwen, je moet niet zorgen dat elke weg naar uitbreiding geblokkeerd is. Daarom moet je dus niet je constructor opeens private gaan maken of een singleton gebruiken.

Tevens testen niet doen? Dat weet je zeker? Je weet dat zodra je gaat testen je code logischer wordt, je sneller script omdat je alles test en je weet dat testen je later extreem veel voordeel op gaat leveren? Denk bijv. aan fixen van een bug, allereerst moet je de bug kunnen nabootsen en vervolgens moet je er maar zeker van zijn dat alles in je framework nog werkt nadat je de bug denkt opgelost te hebben.
Wat je doet is dat je een test schrijft die de bug nabootst en dat je vervolgens de bug oplost en dan alle tests van het framework afspeelt, slagen alle tests dan weet je zeker dat alles in je framework niet werkt.

Ik ben best benieuwd naar jou redenen om niet te gaan testen.
Nja, ik hoop dat ik alles in 1x goed kan maken :D

Nou, zeg nooit nooit... maar ik wil me daar nu niet mee bezig houden. Zoveel tijd heb ik niet. Da's de voornaamste reden.

Voor de rest wil ik m'n framework lichtgewicht maken. Veilig, efficiënt en doeltreffend. Zonder veel rare fratsen.

Mijn reden waarom ik de contructor private zou maken, zou dan zijn om te voorkomen dat ik alle globals zou gaan doorgeven, terwijl er een makkelijkere methode is. Door de contstructor private te maken, dwing je jezelf om altijd de makkelijke functie te gebruiken.

Reageren