Pregunta

He estado hurgando en PHP para la programación orientada a objetos y me di cuenta de algo ... Los objetos se re-crea una instancia cada vez que se actualiza la página. El problema es que quiero el objeto de mantener cierta información en las variables de clase durante todo el tiempo que alguien está en un sitio web.

  1. ¿Hay algún tipo de forma de mantener una Objeto vivo todo el tiempo que alguien está navegando en el sitio web?
  2. ¿Qué alternativas existen a mi problema?

Sería muy útil disponer de ejemplo también!

¿Fue útil?

Solución

PHP no es con estado. Cada carga de la página es un evento de una sola vez. Puede guardar los datos de las sesiones, o mediante el almacenamiento de información en una base de datos.

Otros consejos

Puede utilizar Sesiones para mantener los datos asociados a un usuario entre distintas páginas (citando)

  

El soporte de sesiones en PHP consiste en una   manera de preservar ciertos datos a través de   accesos posteriores.

Vea la Sesión Manejo sección del manual, para más información sobre las sesiones .

Un script php tiene que salir antes de Apache puede servir a la página, así que si realmente quieres hacer eso, una cosa que puede hacer es serializar y almacenar todos los objetos que desea utilizar para persistir y sesión de cookies para realizar un seguimiento de los usuarios

  1. PHP no se statefull cada petición es un nuevo proceso en el servidor

Su mejor opción es utilizar los datos de sesión y entregar los datos de la sesión a los objetos cuando se crean instancias. Tienen los contructors tirar de los datos que necesitan salir de la sesión, y que esencialmente tendrá la plenitud de estado que necesita.

puede acess sesion utilizando

$_SESSION['stuff'] = $data;

A continuación, puede utilizar sus objetos como $ X = new DataStore ($ _ [ 'cosas'] SESIÓN);

Si los datos de los theres en la sesión del objeto en sí poblarán partir de esos datos. De lo contrario, será por defecto estándar init.

Aún cuando enfoques como la serialización de objetos y luego deserializar las mismas es útil, hay que asegurarse de que entiende primera ¿Por qué los objetos de "desaparecer".

HTTP, el protocolo utilizado para recuperar las páginas y otros recursos de los servidores web, es sin estado . Básicamente, significa una solicitud no sabe nada de la otra solicitud, incluso cuando se trataba del mismo usuario. Piénsalo de esta manera, cuando usted solicita su página PHP, el script se ejecuta y después de que termine Apache envía el resultado a usted. Cuando se solicita la página de nuevo, se hace lo mismo como si fuera la primera vez que lo hizo. Es sin estado.

Existen técnicas para mantener el estado entre peticiones (lo hacen para que no se olvide de sus objetos) y los que implican cosas como galletas o la reescritura de URL. Pero hay que tener en cuenta la naturaleza sin estado de HTTP (y por lo tanto su script PHP) en el desarrollo de aplicaciones Web.

Las sesiones son buenos, yo los utilizo para mantener el estado del objeto en una parte de mi programación PHP.

O una mejor solución sería utilizar Flex por lo que no tiene que preocuparse por el protocolo HTTP sin estado ...

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