Pregunta

Digamos que en mi aplicación tengo una instancia de objeto creada en la página 1. El usuario luego va a alguna otra parte de la aplicación y quiero que la instancia permanezca. ¿Cómo puedo 'guardar' la instancia? Sesiones?

¿Fue útil?

Solución

Sí, use una sesión .

Llame a session_start () al comienzo de su página, luego almacene su objeto con algo como $ _SESSION ['myobject'] = $ myobject;

La página posterior puede acceder a $ _SESSION ['myobject'] después de que también llame a session_start ()

Debe asegurarse de que cualquier página que utilice esa sesión tenga la clase para el objeto definido o sea capaz de carga automática .

Su clase también puede definir los métodos mágicos __ sleep y __ wakeup que le permite limpiar cualquier variable miembro que no desee que sea serializada (como recursos, como los manejadores de db). Durante __wakeup puedes restaurar estos.

Otros consejos

He utilizado dos formas para mis aplicaciones: sesiones y base de datos.

Sesiones, sí, pero será una nueva instancia con las mismas propiedades y no la misma . Otras opciones son usar un O / R-Mapper para almacenar el objeto en la base de datos y mantener la clave para él en la sesión, o usar memcached con una clave única (digamos el ID de la sesión), pero esto aún no sería el la misma instancia - solo una instancia con las mismas propiedades.

Si necesita la instancia exactamente igual de un objeto entre dos solicitudes en PHP, me temo que esto es imposible (no imposible , todo es factible, pero usted ' Tendré que ejecutar PHP sobre algún tipo de servidor de aplicaciones)

Básicamente tienes dos opciones: Estado del lado del servidor o Estado del lado del cliente .

El estado del lado del servidor generalmente se realiza a través de sesiones. Esta es la solución más simple y poderosa, pero tiene algunos inconvenientes (concurrencia, incapacidad de persistir en el tiempo, etc.).

El estado del lado del cliente se puede mantener a través de la URL, generalmente en los parámetros de cadena de consulta. Por ejemplo, para " recordar " una variable $ name entre dos páginas, puede crear un enlace en la primera página, como este: http://www.example.org/second_page.php?name=Jimbo, y la segunda página podría obtener la variable a través de $ _GET . Es mucho más difícil hacerlo bien, y tiene algunas limitaciones en cuanto a la cantidad de estado que puede transferir entre páginas. Por esta razón, las personas tienden a ir con el estado del lado del servidor, incluso cuando el estado del lado del cliente sea más apropiado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top