Domanda

Diciamo che nella mia app ho un'istanza di oggetto creata a pagina 1. L'utente quindi passa ad un'altra parte dell'app e voglio che l'istanza rimanga. Come posso "salvare" l'istanza? Sessioni?

È stato utile?

Soluzione

Sì, utilizzare una sessione .

Chiama session_start () all'inizio della tua pagina, quindi archivia il tuo oggetto con qualcosa come $ _SESSION [ 'myobject'] = $ myObject;

La pagina successiva può accedere a $ _SESSION ['myobject'] dopo che anch'essa chiama session_start ()

Devi assicurarti che ogni pagina che usa quella sessione abbia la classe per l'oggetto definito o sia in grado di caricamento automatico esso.

La tua classe può anche definire i metodi magici __ sleep e __ wakeup che ti consente di ripulire qualsiasi variabile membro che non desideri serializzare (come risorse, come handle db). Durante __wakeup puoi ripristinarli.

Altri suggerimenti

Ci sono due modi in cui ho usato per le mie applicazioni: sessioni e database.

Sessioni sì, ma sarà una nuova istanza con le stesse proprietà e non l'istanza stessa . Altre opzioni stanno usando un O / R-Mapper per memorizzare l'oggetto nel DB e conservare la chiave per esso nella sessione, oppure usare memcached con una chiave univoca (diciamo l'ID di sessione) - ma questo non sarebbe ancora same - solo un'istanza con le stesse proprietà.

Se hai bisogno dell'istanza identica di un oggetto tra due richieste in PHP, temo che sia impossibile (non impossibile , tutto è fattibile, ma tu ' dovrò eseguire PHP su qualche tipo di application server)

Fondamentalmente hai due opzioni: Stato lato server o stato lato client .

Lo stato lato server viene generalmente eseguito tramite sessioni. Questa è la soluzione più semplice e potente, ma presenta alcuni inconvenienti (concorrenza, incapace di mantenere lo stato nel tempo, ecc.).

Lo stato del lato client può essere gestito tramite l'URL, generalmente nei parametri della stringa di query. Ad esempio, per " ricordare " una variabile $ name tra due pagine, potresti creare un link sulla prima pagina, in questo modo: http://www.example.org/second_page.php?name=Jimbo e la seconda pagina potrebbe quindi ottenere la variabile tramite $ _GET . Questo è molto più difficile da ottenere, e ha alcune limitazioni su quanto stato puoi trasferire tra le pagine. Per questo motivo, le persone hanno la tendenza ad andare con lo stato lato server, anche quando lo stato lato client sarebbe più appropriato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top