Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Novata en phpOO

Estas en el tema de Novata en phpOO en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Saludos. Miren, tengo experiencia trabajando con OO mediante lenguajes de alto nivel. Ahora estoy intentando trabajar también OO pero en php, sin embargo, la programación ...
  #1 (permalink)  
Antiguo 29/08/2005, 10:10
Zia
 
Fecha de Ingreso: agosto-2005
Mensajes: 9
Antigüedad: 18 años, 8 meses
Puntos: 0
Exclamación Novata en phpOO

Saludos.
Miren, tengo experiencia trabajando con OO mediante lenguajes de alto nivel.
Ahora estoy intentando trabajar también OO pero en php, sin embargo, la programación OO mediante scripts no lo llevo nada bien

Mi principal duda es la siguiente, se supone que la aplicación que estoy desarrollando, accede en primer lugar al index.php, bien, ahi creo los objetos necesarios, y genero un documento html. Ahora, segun la opción elegida por el usuario desde el navegador, redirecciono a otro fichero php y trato la información enviada por el usuario, lo mas convencional del mundo, vaya.
Bien, evidentemente, al finalizar el index.php, los objetos creados se destruyen, y mi pregunta es: ¿Hay alguna forma de que los objetos queden persistentes o algo parecido?.
Les puede parecer una pregunta estupida, pero como he dicho antes, no estoy acostumbrada a trabajar con scripts. La verdad es que me resulta muy incomodo crear un objeto de la clase BaseDatos, para obtener ciertos datos, generar un html para el usuario y cuando éste vuelva a enviar nueva informacion, volver a generar otro objeto BaseDatos para almacenar la información. Si no me equivoco, cada vez que se genere un html para el usuario (lo que implica acabar el script), a la siguiente vez es necesario volver a crear de nuevo todos los objetos, y asi cada vez que se precise que algun procesamiento por parte del lado servidor.

Personalmente, si es asi la forma de trabajo, y teniendo en cuenta que tengo una aplicación con muchas funcionalidades diferentes (muchos scripts muy cortos), me parece engorroso e ineficiente. (Creo que voy a echar mano muy a menudo de los metodos 'static')

Muchas gracias por su ayuda, un saludito.
  #2 (permalink)  
Antiguo 30/08/2005, 08:17
 
Fecha de Ingreso: julio-2005
Mensajes: 22
Antigüedad: 18 años, 9 meses
Puntos: 0
objetos

hola Zia, puedes utilizar algunas opciones como por ejemplo, crear un solo script en donde creas las clases y si quieres los objetos(instancias de estas clases),(creandolos dentro de funciones) y luego incluir este script donde necesites los objetos, lo cual significa que el objeto(s) se creara cada vez que que se incluya en nuevo script, pero las clases ya estan listas.

Por otro lado, si lo que quieres es crear tanto las clases como sus objetos una sola vez..., puedes crear los objetos la primera vez y clonarlos en objetos GLOBALES (de SESSION),(esto depende de la version de PHP que estes manejando -- en la version PHP 4...para abajo simplemente haces copias de los objetos haciendo asignaciones, en PHP 5 debes utilizar "clone()"). En fin si son de SESSION, estaran disponibles durante toda la ejecucion de la aplicacion, hasta que cierres el navegador o hasta que tu los destruyas explicitamente.
  #3 (permalink)  
Antiguo 30/08/2005, 13:47
Avatar de vitxo  
Fecha de Ingreso: septiembre-2003
Ubicación: Valencia
Mensajes: 219
Antigüedad: 20 años, 7 meses
Puntos: 0
Zia,
existen implementaciones para conseguir objetos persistentes como Propel (http://sourceforge.net/projects/propel/). De tal forma, que el ciclo de vida de un objeto no se reduce al momento en que el usuario envía la petición hasta que recibe la respuesta generada por el servidor. Si quieres crear objetos una sola vez en cada petición, siempre puedes implementar el patrón Singleton. (http://www.phppatterns.com)

Cuando empecé a desarrollar aplicaciones web en PHP me ocurrió algo parecido a ti porque aprendí a crearlas en J2EE y, hasta que "cambias el chip" o el enfoque de tus aplicaciones, da la impresión de que todo es confuso e ineficiente. Pero no es así, por lo menos yo lo creo. :)
El quid de la cuestión es precisamente ése: por ejemplo en Java, una aplicación web se está ejecutando independientemente de que reciba o no peticiones HTTP por parte del usuario. En otros lenguajes de alto nivel como PHP, PERL o Ruby, la ejecución de la aplicación comienza con la petición del usuario a través de la URL y termina en el momento en que se le envía la respuesta, cosa que desde mi punto de vista, encaja mejor con el propio protocolo HTTP que carece de estado.

Pero bueno, sólo es una opinión. :)

Contando con que el motor de PHP es realmente muy rápido (el intérprete ejecuta un bytecode intermedio) y si diseñas tus aplicaciones ajustándote a su ciclo de vida y al contexto de PHP, conseguirás tiempos de ejecución muy buenos. En la empresa en la que trabajo, desarrollamos aplicaciones en PHP muy muy complejas y no utilizamos motores de persistencia de objetos. Desde mi punto de vista y si te sirve de algo, meter un motor de persistencia por medio para alargar la vida de tus objetos y mantener el estado para todas las peticiones probablemente te dé muchos quebraderos de cabeza.

un saludo, vitxo.
  #4 (permalink)  
Antiguo 30/08/2005, 13:54
Avatar de vitxo  
Fecha de Ingreso: septiembre-2003
Ubicación: Valencia
Mensajes: 219
Antigüedad: 20 años, 7 meses
Puntos: 0
Se me olvidaba: Propel no sólo es un motor de persistencia, también implementa el patrón Object Relational Mapping, que permite manipular una base de datos relacional de forma transparente y tratando únicamente con los objetos que forman el modelo de datos de una aplicación (Los DAOs, Data Access Objects).
  #5 (permalink)  
Antiguo 30/08/2005, 17:25
Zia
 
Fecha de Ingreso: agosto-2005
Mensajes: 9
Antigüedad: 18 años, 8 meses
Puntos: 0
Muchas gracias

Muchas gracias por responder, creo que voy a usar la opcion que propuse SerAlejandro de almacenar el objeto mediante sesiones.
Por cierto, muy buena la página http://www.phppatterns.com vitxo, me será de gran ayuda.

Gracias, un saludo.
  #6 (permalink)  
Antiguo 30/08/2005, 18:32
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Zia:
Creo que esta discusión que ya tuvimos hace un tiempo por este foro te será de gran ayuda:
http://www.forosdelweb.com/f68/objetos-globales-270787/

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:46.