Session handler

Tags:    php

Jeg er sgu kommet i mit givende hjørne her... :)

Har længe været utilfreds med den måde man håndterer session data i PHP. Egentlig er det en okay og logisk måde - at arbejde med arrays, som man gør det alle andre steder. Men nu er jeg bare mere til objekter. Så her har i sessions i OO style.

Denne metode forsøger automatisk at starte PHPs session handler. Så det skal man ikke huske at kigge efter. Dette virker kun til PHP5+

Fold kodeboks ind/udKode 


Basic usage:
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 06.02.2008 08:19 af Bruger #10216
8 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
det kunne måske være interessant at få at vide, under hvilke betingelser du stiller dette til rådighed?



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.
Fold kodeboks ind/udKode 


Med min metode ender det med at se ud som flg.:
Fold kodeboks ind/udKode 


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.

Fold kodeboks ind/udKode 


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:

Fold kodeboks ind/udKode 


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
Hvis du ikke mener du kan bruge det, så lader du vel bare være med at bruge det?

Det er rigtig godt kodet, kan godt ske jeg kan bruge det engang, gemmer det ihvertfald lige på computeren så kan jeg jo altid finde det frem hvis jeg har brug for det :).



Så er der også dottet den slags ting på...



Indlæg senest redigeret d. 06.02.2008 08:42 af Bruger #10216
hmm... Ud fra den kode du har opgivet, synes jeg ikke umiddelbart at jeg kan se formålet med dit "namespace" - der er og bliver jo kun et (som jeg kan se).

Det virker derfor overflødigt at skulle angive navnet på et namespace i __construct, idet man ikke kan have 2 variable med samme navn (i samme objekt) i hver sit namespace alligevel...


Tager jeg fejl?

Det er ellers en udemærket løsning synes jeg...




Namespacing er til for dele sessions-variablen op i mere håndgribelige stykker.

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 06.02.2008 21:26 af Bruger #10216
Namespacing er til for dele sessions-variablen op i mere håndgribelige stykker.

Fold kodeboks ind/udKode 


fatter det stadig ikke....

Du bruger jo ikke navnet på dit namespace til noget - og derfor virker det overflødigt at definere dem (i min verden). Hvorfor ikke bare:

Fold kodeboks ind/udKode 


Det er jo to forskellige objekter alligevel... $session og $session2 har jo intet med hinanden at gøre.

Hvis du vil gøre brug af dit namespace ville en singleton klasse være smartere (igen - synes jeg) hvor du definere hvilket namespace du vil hente fra/skrive til. F.eks. som herunder (dog ikke en singleton):

Fold kodeboks ind/udKode 


Det kan naturligvis gøres smartere, men det viser i hvert fald hvordan namespace kan bruges.

Som jeg har forstået namespaces så er de netop til for, at kunne have flere variable med samme navn, men i hver sit namespace.




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.
Fold kodeboks ind/udKode 


Med min metode ender det med at se ud som flg.:
Fold kodeboks ind/udKode 


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.



t