Goedemorgen PHPers!

Zoals meerdere van jullie ben ik bezig met php en wel volledig OO te programmeren.

Nu zat ik te denken om een $_SESSION["username"] en overige gegevens in 1 klasse te stoppen en daar te controleren op geldigheid enzo.

Nu wil ik in andere klasses ook de username aanroepen. Maar dit wil ik niet met $_SESSION ophalen, maar via die klasse hierboven beschreven.

Is het verstandig om de klasse static te maken zodat je een methode gelijk kan aanroepen zonder dat je een nieuw object van die klasse aanmaakt. Of is het toch verstandiger om steeds een nieuw object aan te maken van die klasse om die username op te halen?

Ik ben er nu niet mee aan het scripten, zat gewoon eens te denken.
Je moet goed letten op het verschil tussen static properties en normale properties. Elk object (instantie van een class) heeft in principe zijn eigen eigenschappen. In het geval van een session class zou het dus niet wenselijk zijn om iedere keer een nieuw object aan te maken aangezien de properties (sessievariabelen) dan ook anders zullen zijn.

Static properties daarentegen zijn eigenschappen van de class (en niet van het object). Deze zijn direct benaderdbaar zonder een instantie van die class aan te maken. Maar in dit geval zou de class niets meer zijn dan een extra laag om je sessievariabelen heen en zou ik het gebruik dus niet aanraden.

Als je een class schrijft of je sessies af te handelen, moet je dat niet zien als een grote bak waar je al je sessievariabelen in gooit. Nee, deze vangt dan alle handelingen met betrekking tot sessies, zoals wegschrijven en ophalen, op. Kijk hiervoor eens naar verschillende voorbeelden van session handlers die op internet te vinden zijn.
Oke bedankt voor de info!
Ik heb nog niet gekeken naar handlers dat ga ik zeker wel even doorlezen. Hoe word dit in grote cms systemen opgelost, ook door handlers of zijn er nog andere manieren?
In de meeste gevallen waarschijnlijk gewoon de session handler van PHP zelf. Je hoeft namelijk niet per se een aparte session handler te gebruiken, die van PHP voldoet in de meeste gevallen...

Reageren