Mantenimiento de objetos PHP
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?
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.