For det første skal du huske på at $_SESSION er et array.
Lad os antage at vi ikke bruger namespaces som med dit første eksempel.
Så kommer $_SESSION til at så ud som flg.<?php
$session = new Session();
$session->name = 'Blob'
print $session->name;
$_SESSION['name'] = 'Blob';
$session2 = new Session();
$session2->name = 'Too cool'
print $session2->name; // "To cool"
$_SESSION['name'] = 'Too cool';
print $session->name; // "Blob"
$_SESSION['name'] = 'Too cool';
?>
Med min metode ender det med at se ud som flg.:
$_SESSION['saveNamespace']['name'] = 'Blob';
$_SESSION['BlobSpace']['name'] = 'Too cool';
At bruge din metode med et singleton, kan være ganske smart. Men det er bare for mange tegn til mig. Se hvor mange gange du gentager namespace i forhold til mig.
Det kommer vel an på hvordan man implementerer min model
Det er klart, at du ikke kan have to $_SESSION['name'], men du behøver bare ikke 2 objekter til at håndtere to namespaces.
Hvis du har to namespaces fordelt på 2 objekter, så behøver du ko ikke at angive et eksplicit navn på namespacet idet objektet klarer det internt. Klassen kan jo bare tildele en tilfældig hash som namespace internt, så udvikleren ikke har noget med det at gøre...
...altså, et objekt kan håndtere
n namespaces i stedet for
n objekter til
n namespaces.
$session->Put("namespace1",array("name" => "Blob")); // $_SESSION['namespace1']['name'] = "Blob"
$session->Put("namespace2", array("name" => " is too cool")); // $_SESSION['namespace2']['name'] = " is too cool"
$session->Get("namespace1","name"); //$_SESSION['namespace1']['name'] som er = "Blob"
$session->Get("namespace2","name"); // $_SESSION['namespace2']['name'] som er = " is too cool"
Se hvor mange gange du gentager namespace i forhold til mig.
Det er jo netop meningen med namespaces at du skal define fra hvilket du hente en værdi, som f.eks python:
>>> import math
>>> pi = 3
>>> pi
3
>>> math.pi
3.14...
>>>
Der er jo ingen grund til at definere navnet på et namespace hvis du aldrig skal bruge navnet til at hente data. I så fald kan navnet jo være "HADFJ2i3u438973487u34" eller noget andet som oprettes automatisk
Indlæg senest redigeret d. 07.02.2008 11:52 af Bruger #4683