Question

Supposons que, dans mon application, une instance d'objet soit créée à la page 1. L'utilisateur accède ensuite à une autre partie de l'application et souhaite que l'instance reste. Comment puis-je "sauvegarder" l'instance? Des sessions?

Était-ce utile?

La solution

Oui, utilisez une session .

Appelez session_start () au début de votre page, puis enregistrez votre objet avec un élément tel que $ _SESSION ['myobject'] = $ myobject;

La dernière page peut accéder à $ _SESSION ['myobject'] après avoir également appelé session_start ()

.

Vous devez vous assurer que toute page qui utilise cette session a la classe pour l'objet défini ou est capable de chargement automatique .

Votre classe peut également définir les méthodes magiques __ sleep and __ wakeup qui vous permet de nettoyer toutes les variables membres que vous ne souhaitez pas sérialiser (telles que les ressources, telles que les descripteurs de base de données). Pendant __wakeup, vous pouvez les restaurer.

Autres conseils

J'ai utilisé deux méthodes pour mes applications: les sessions et la base de données.

Sessions oui, mais ce sera une nouvelle instance avec les mêmes propriétés et non la même instance identique . D'autres options utilisent un mappeur O / R pour stocker l'objet dans la base de données et la conserver dans la session. Vous pouvez également utiliser memcached avec une clé unique (par exemple l'ID de session) - mais ce ne serait toujours pas le même instance - juste une instance avec les mêmes propriétés.

Si vous avez besoin de la même instance exacte d'un objet entre deux requêtes en PHP, je crains que ce ne soit impossible (pas impossible ), tout est faisable - mais vous Vous devrez exécuter PHP sur un type de serveur d’application)

Vous avez fondamentalement deux options: État du serveur ou État du client .

L'état côté serveur est généralement effectué via des sessions. C’est la solution la plus simple et la plus puissante, mais elle présente certains inconvénients (accès simultané, impossibilité de persister dans le temps, etc.).

L'état du client peut être géré via l'URL (généralement dans les paramètres de chaîne de requête). Par exemple, pour vous "rappeler" et une variable $ name entre deux pages, vous pouvez créer un lien sur la première page, comme suit: http://www.example.org/second_page.php?name=Jimbo , et la deuxième page pourrait alors obtenir la variable via $ _ GET . Il est beaucoup plus difficile d’obtenir des résultats corrects, et certaines restrictions quant à la quantité d’état que vous pouvez transférer entre les pages. Pour cette raison, les utilisateurs ont tendance à choisir l’état côté serveur, même lorsque l’état côté client serait plus approprié.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top