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?
Ik snap even niet wat je nu doet.

$_SESSION[$session->getId()] = $session->getValue()

Je slaat het id van de betreffende sessie op in de huidige sessie en daar ken je een niet gedefinieerde waarde aan toe? :-s
Huh?

$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();

$session->setId('foo');
$session->setValue('lorem ipsum');

$sessionManager->update($session);
?>
@Not Moose: ik begrijp hoe een array werkt :)

@Wouter: het ligt denk ik aan de benamingen dat ik het niet helemaal begrijp.

setID() bedoel je daarmee de key van de session? En met setValue, is dat de waarde die je toekent aan die ID?

in platte code, is wat jij doet:

$_SESSION['foo'] = 'lorem ipsum';

?
Ja
Waarom doe je dan dit...

$session->setId('foo');
$session->setValue('lorem ipsum');

En niet dit:

$session->set('foo', 'lorem ipsum');
Ozzie PHP op 08/01/2013 20:06:46

@Not Moose: ik begrijp hoe een array werkt :)

@Wouter: het ligt denk ik aan de benamingen dat ik het niet helemaal begrijp.

setID() bedoel je daarmee de key van de session? En met setValue, is dat de waarde die je toekent aan die ID?

in platte code, is wat jij doet:

$_SESSION['foo'] = 'lorem ipsum';

?


Lol dat is toch precies wat ik net ook zei???
Omdat dat iets heel anders is? Die onderste code zou een functie van de SessionManager kunnen zijn en die bovenste van de Session object.
Aaaahhh... ik word gek :-/

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.
<?php
session_start();

$user = $_POST['user'];

$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/

Reageren