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();
$session->getId() bevat de key van de array en $session->getValue() bevat de value van de Session. Je slaat dus gewoon de sessie op, zeg maar:
<?php
$session = new Session();
Laten we het even anders doen en alle bovenstaande voorbeelden compleet vergeten.
Ik heb een website. De bezoeker typt in een formulier zijn naam in, 'Piet'.
Deze naam wil ik nu in een sessie zetten. Hoe zou je dat dan doen, gebruikmakend van de Session class en SessionManager class. Ik zal laten zien wat ik (simplistisch) vroeger deed:
<?php
session_start();
$user = $_POST['user'];
$session = new Session();
$session->set('user', $user);
echo 'Hallo ' . $session->get('user');
?>
Hoe zou je dan bovenstaand voorbeeld uitvoeren op jullie manier? Misschien begrijp ik het dan wat beter.
$session = new Session();
$session->setKey('user');
$session->ssetValue($user);
$manager = new SessionManager();
$manager->save($session);
?>
Zoiets. De SessionManager is gewoon een extra abstractielaag. De Sessie class is in feite niets meer dan een object met een key en een value. Misschien kan je beter klein beginnen, ik raad je aan deze tutorial(s) eens door te nemen: https://webdevils.nl/articles/2-oop-gastenboek-deel-1-introductie/