Ver Mensaje Individual
  #6 (permalink)  
Antiguo 31/05/2008, 17:39
Volrath
 
Fecha de Ingreso: septiembre-2003
Ubicación: Pirexia
Mensajes: 150
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: Metodo estatico que sepa el nombre de la clase que lo llama

Cita:
Iniciado por enriqueplace Ver Mensaje
Dos comentarios:
  • No es necesario (ni recomendable) que el atributo sea público.
  • ¿para qué caso práctico puedes necesitar preguntar por la clase? Justamente, el beneficio está en no atar al sistema a "implementaciones concretas" y sí a "implementaciones abstractas" (principios de diseño).
Hola, en cuanto a tu primer punto, no estoy seguro de porque dices q no es recomendable que el atributo sea publico, en mi caso en particular, yo no lo utilizo como publico sino como protected. Pero me gustaria saber porque piensas que no es recomendable que el atributo sea publico

En cuanto al segundo, creo que como no di un contexto amplio de que es lo que estoy implementando te confundiste y piensas que no existe caso practico de interes.

Voy a colocar un escenario corto (no mi escenario particular) en el cual es util: Estas construyendo un ORM, Sigues la convencion de que las clases se llamaran igual que las relaciones.

Digamos que, ademas de las comunes tareas de hacer que las instancias de tus clases puedan guardarse, actualizarse y borrarse de la base de datos por si mismas, ahora quieres que tus clases (que representan relaciones) puedan funcionar de managers de las relaciones. Es decir, ahora quieres tener metodos de clases (o como php5 los llama: metodos estaticos) para poder actuar sobre todas las instancias y todas las tuplas de las relaciones en la BD.

Quieres que tu tabla/clase pueda hacer cosas como: Persona::obtenerTodas() y que esto te devuelva tantos objetos instancias de la clase Personas como tuplas haya en la relacion PERSONA de la base de datos. pero ahora ademas tienes: Casa::obtenerTodas() , Carro::obtenerTodas()... etc... se supone que por "desiciones de dise;o" no quieres implementar estos metodos en todas las clases que declares, Por lo tanto quieres una superclase que lo tenga, llamemosla Modelo. Ahora, para el metodo Modelo::obtenerTodas tenemos que saber cual es el nombre particular de mi (sub)clase para poder decirle a la base de datos sobre cual tabla en particular queremos ejecutar el query (en este sencillo ejemplo: SELECT * FROM $class_name)

Esta es solo una de las utilidades practicas.. No es que ahorita este construyendo un ORM, pero es el ejemplo comun que se suele dar para este tipo de requerimientos.

----

En cuanto a lo que escribio GatorV: Hola! Gracias. No entiendo lo de la limitante de crear el objeto antes de usarlo :$, no estoy muy seguro de las cosas en PHP, repito jeje. Pero hasta los momentos no me ha ido mal con esa implementacion.

Gracias a los dos por sus respuestas!
__________________
In a world without walls, who needs Windows?