OOP i "stateless" verden

Tags:    php mysqli oop

Hej alle i kloge mennesker.

Jeg er igang med at udvikle et tool(WiseManager), som skal administrere brugerne på en hjemmeside, det er programmeret i PHP(OOP).

"Problemet" er at PHP løber script igennem og terminerer(sletter objekter). Dvs. den tilstand, som man satte objektet i, er væk.

Man kan serialize objekterne og unserialize dem igen. Men det vil give problemer, hvis man i objekt-1(unserialize) refererer/kalder på objekt-2(serialize).
Ved denne fremgangsmåde vil der også være problemer med at holde styr på hvilke objekter, der passer til hvilke filer.

Anden løsning er, at hver gang man ændrer noget i objektet, skal man gemme tilstanden ude i en database. Her kan man gøre det på 2 måder,

1 : på hver mutatermetode (kan være mange) - opdaterer DB. Dette giver mange små kald til databasen, og der er meget kode, som skal skrives til en simple mutatermetode

2 : overskrive __destroy metoden og få den til at opdatere tilstanden i DB. Dette giver et stor opdatering query og selvom dataen ikke er ændret, opdateres den alligevel. Altså unødvendigt arbejde.

Så mit spørgsmål er:
Er eksisterer der ikke en (nem) måde, man kan håndtere disse tilstande på, eller skal man selv opfinde en måde at gemme tilstanden på?



5 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Mit bud vil være, at database, som du selv nævner, er vejen frem. Men der er ingen der siger det skal være en SQL database jo? Det kunne være det ville være nemmere / anderledes med en no-SQL db ?



Er også den løsningen som jeg har tænkt på, men ville gerne høre om der var nogle som kendte en måde at håndtere det på. Må være andre som også har tænkt på dette problem :)

Har du nogle forslag til no-SQL DB? Her tænker jeg på ex. XML



Hvad med en objekt orienteret DB? Så har du vel state således.



Har kun arbejdet med ralationel databaseer, så kender kun databaser inde fra den genre.

Så vil meget gerne have nogle konkrete DB'er jeg kan prøve at kigge på.



Mmm... ActiveRecords er da vist implementeret i PHP, så der har du i princippet en funktionsdygtig implementering af noget der ligner "semi-state".

Ellers skal du hacke dig ind i $_SESSION variablen og gemme properties i den. Det er også hvad du benytter i serialized objects der skal eksistere under hele sessionen.

http://php.net/manual/en/oop4.serialization.php & http://www.php.net/manual/en/oop4.magic-functions.php

herefter kan du skyde en session handler ind over: http://php.net/manual/en/class.sessionhandler.php

Så er du vist kørende?

Men at opfindes states i en stateless verden - den er svær. :)



t