Estamos diseñando un sistema en PHP con POO junto a una programadora que viene de Java, y no terminamos de entender bien como funcionarian los objetos dentro del ambiente en PHP5 lo cual nos trae dudas al tratar de hacer las cosas de acuerdo al paradigma e interpretar la dinamica del sistema de un diseño UML que se hizo pensando en Java, principalmente por el tema de performance con PHP.
Al grano...
Imaginen que el sistema tiene un Objeto Clase USUARIO, el cual tiene un Atributo FACTURAS que es una coleccion de Objetos Clase Factura, y mi objeto Factura tiene un Atributo llamado Items que es una coleccion de Objetos de la Clase Item.
Bien, la Clase Usuario ademas tiene un metodo que se llama mostrarLasFacturas(); y otro que es mostrarLasFacturasImpagas(); que hacen mas o menos lo que dicen...
Ahora supongamos que tengo que tirar una pantalla con la lista de Facturas.
Mas o menos seria una cosa asi...
Código PHP:
<?
// Esto seria el index.php al que accede el usuario desde su navegador
$accion = $_GET[accion];
$JuanCarlos = new Usuario();
switch ($accion){
case facturas:
$JuanCarlos->mostrarFacturas();
break;
case impagas:
$JuanCarlos->mostrarFacturasImpagas();
break;
}
?>
O sea... cada vez que quiera tirar un listado de facturas en PHP el servidor tiene que :
1 - Crear una instancia del Objeto Usuario.
2 - Consultar a la base de datos todos los datos del usuario para llenar sus atributos
3 - Por lo tanto crar sus facturas, y consultar las datos de sus facturas
4 - Crear los objetos items y consultar a la DB
5 - Levantar todo el objeto usuario en el ambiente
6 - Ejecutar el metodo que le pido y devolver el listado de facutras, que es un HTML por ejemplo.
?¿
Y luego de hacer es laburo para tirar un listado de facturas, que pasa con el objeto, se va al caño, queda en algun lado, lo puedo usar de nuevo sin reinstanciarlo ?
O si pido de nuevo el listado de facturas, me tiene que levantar de nuevo el objeto en el ambiente desde la persistencia?
El objeto sigue vivo en algun lado, en la sesion?
Si desde otro navegador el mismo usuario accede y consulta por las facturas impagas, el sistema tiene que volver a crear el usuario en memoria, consultar a la base de datos, y ejecutar la otra funcion?
El tema es entender que hace el php con los objetos de forma interna, si levanta el ambiente cada vez que se llama a un script, si los objetos se utilizan de varias sesiones, si quedan los objetos en algun lado, se pueden usar desde una sesion sin reinstanciarlos, porque es un tema jorobado de performance y uso de recursos... y no sabemos si un diseño pensado para java se plancha en php asi nomas o hay que repensarlo todo de nuevo por estos temas.
Bueno este es el 80% de lo que sinceramente no entendemos bien. Yo tengo poca experiencia en POO y ella es Java 100% Poo, virtual machine y servlets... otra cosa, asi que cualquier ayuda clarificante sera muy agradecida.
Saludos!
K.