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

metodo con nombre de clase hija

Estas en el tema de metodo con nombre de clase hija en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Código PHP: class  padre {     function  getClassName () {} } class  hijo  extends  padre  { } hijo :: getClassName ()  //quisiera que me devuelva "hijo"  Alguien sabe como hacerlo? Gracias la ...
  #1 (permalink)  
Antiguo 18/10/2006, 08:20
 
Fecha de Ingreso: noviembre-2004
Mensajes: 18
Antigüedad: 19 años, 5 meses
Puntos: 0
metodo con nombre de clase hija

Código PHP:
class padre
{
    function 
getClassName() {}
}

class 
hijo extends padre { }

hijo::getClassName() //quisiera que me devuelva "hijo" 
Alguien sabe como hacerlo? Gracias
la llamada al metodo debe ser sin instanciarlo.

Última edición por clasen; 18/10/2006 a las 08:46
  #2 (permalink)  
Antiguo 18/10/2006, 08:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
usa la funcion get_class
  #3 (permalink)  
Antiguo 18/10/2006, 08:46
 
Fecha de Ingreso: noviembre-2004
Mensajes: 18
Antigüedad: 19 años, 5 meses
Puntos: 0
Si no se instancia la clase, "get_class" no sirve.
Gracias igual.

get_class

(PHP 4, PHP 5)
get_class -- Devuelve el nombre de la clase de un objeto
Descripción
string get_class ( [object obj] )

Esta función devuelve el nombre de la clase de la cual el objeto obj es una instancia.
  #4 (permalink)  
Antiguo 18/10/2006, 09:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Amigo si editas tus mensajes despues de que los responden no esperes que la respuesta sea la correcta.

Para hacer lo que necesitas php dispone de una constante __CLASS__ que te puede servir para eso.
  #5 (permalink)  
Antiguo 18/10/2006, 09:05
 
Fecha de Ingreso: noviembre-2004
Mensajes: 18
Antigüedad: 19 años, 5 meses
Puntos: 0
Amigo el mensaje original decia lo mismo sin RESALTE EN ROJO
Lo puse para que no se le escape al resto.

Con __CLASS__ devuelve el nombre del padre, no del hijo.
  #6 (permalink)  
Antiguo 19/10/2006, 07:45
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Me encantan las personas educadas y agradecidas...
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #7 (permalink)  
Antiguo 19/10/2006, 12:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Ni me lo digas, uno que solo trata de ayudar, pero bueno, mejor permito que otra persona le asesore con sus problemas.
  #8 (permalink)  
Antiguo 19/10/2006, 15:15
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 7 meses
Puntos: 3
Amigo!!! lo que pides es algo totalmente inutil ni me imagino para que quieres saber eso... pero en fin si lo que quieres es saber el nombre de la clase padre sin instanciar el hijo solo queda una solucion:
Utilizar reflectionClass. Aunque lo más lógico es lo que dice GatorV espero que te sirva Amigo!!!
Código PHP:

class Padre{}

class 
Hijo extends Padre{}

$class = new ReflectionClass('Hijo');

echo 
$class->getParentClass()->getName(); 
Como disfruto de estas cosas por cierto enriqueplace hace tiempo que no tenemos una discusion sobre algun tema interesante... habrá que pensar en algo.

También decir que tengo el tutorial sobre Zend Framework acabado pero me quitaron el Blog por no utilizarlo me tendre que abrir uno nuevo en breve lo publicaré lastima que no tenga mucho tiempo
  #9 (permalink)  
Antiguo 20/10/2006, 07:57
Avatar de Felippe  
Fecha de Ingreso: octubre-2006
Mensajes: 54
Antigüedad: 17 años, 6 meses
Puntos: 0
Hola, en respuesta a lo que pide el Amigo!!!!, tal vez puedo sugerir el uso de métodos estaticos, o talvez el operador instanceof. En realidad no se comprende lo que quiere .

Causuis, podrias facilitarnos, por favor, el tutorial de Zend, estamos en la búsqueda de un buen framework. Qué opinas de Zoop?

Un saludo
  #10 (permalink)  
Antiguo 20/10/2006, 07:58
Avatar de Felippe  
Fecha de Ingreso: octubre-2006
Mensajes: 54
Antigüedad: 17 años, 6 meses
Puntos: 0
Casuis, Perdon por el error de nick, no me fije al escribir apurado, lo siento.
  #11 (permalink)  
Antiguo 20/10/2006, 09:16
 
Fecha de Ingreso: noviembre-2004
Mensajes: 18
Antigüedad: 19 años, 5 meses
Puntos: 0
Perdon, no quise ser desagradecido ni mal educado.

La idea es implementar el patron de diseño active-record (builder.com.com/5100-6386-5111856-2.html) y entre los metodos hacer un "insert" que use el nombre de la clase como nombre de la tabla.

$usuario = new Usuario();
$usuario->insert(...);
esto ya lo tengo, pero a veces es inutil instanciar la clase solo para insertar,
entonces quisiera que el metodo sea estático, pero necesito usar el nombre de la clase y al no tener la instancia ($this), no encuentro la forma.
$usuario::insert(...);
Tampoco quiero pasarle el nombre de la clase por parametro.

Saludos!
  #12 (permalink)  
Antiguo 20/10/2006, 09:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Puedes bajar e investigar como funciona Propel, usa un mecanismo basado en XML y en Creole para mantener una definicion de datos y usarlos de la manera que estas buscando.

Es decir, usar un metodo estatico y obtener un resultado.
  #13 (permalink)  
Antiguo 20/10/2006, 13:38
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 7 meses
Puntos: 3
Tranquilo clasen aqui hay mucho cachondeo, aunque nos saquemos los ojos todos sabemos que ayudandonos unos a otros acabamos aprendiendo todos.

Para el patron active Record te recomiendo que pruebes Adodb Active record que ya esta hecho y si quieres puedes extenderlo para utilizarlo a tu manera.

Es un consejo claro esta. Ya me diras
  #14 (permalink)  
Antiguo 20/10/2006, 14:36
 
Fecha de Ingreso: noviembre-2004
Mensajes: 18
Antigüedad: 19 años, 5 meses
Puntos: 0
Conocia Propel... me parece lo mas serio dentro de lo que hay para PHP5. Tengo pensado usarlo cuando haga algun proyecto en synfony. Que les parece synfony?

Adodb active record es una buena opción... pero se me presento desarrollar uno propio bien ajustado a mis requerimientos... igualmente esta clase que estoy desarrollando usa "pear db" o "adodb" indistintamente.

Tambien soy partidario de usar lo ya desarrollado y aprovechar las mentes brillantes que nos regalan sus creaciones... pero en este caso vengo (hace mucho tiempo) con un conjunto de funciones que fueron mutando hasta llegar a ser la clase en la que estoy trabajando que tambien interactua con otras clases... ademas esto me ayuda a seguir creciendo con la OOP

Cuando comence quise hacer mucho de lo que ya estaba hecho... es parte del orgullo del programador... y parte de lo que te da buena practica.

Pero en este caso es algo que tiene su ventaja competitiva con respecto a adodb por ejemplo... con propel no tuve casi experiencia (aun). Pero se lo ve solido.

Saludos!

Otra cosa
Por el tema del ::insert se podría hacer un singleton pattern no? que opinan?
  #15 (permalink)  
Antiguo 22/10/2006, 20:08
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Cita:
Iniciado por Casuis Ver Mensaje
Como disfruto de estas cosas por cierto enriqueplace hace tiempo que no tenemos una discusion sobre algun tema interesante... habrá que pensar en algo.
El problema es que tú dejas las cosas inconclusas, y yo no puedo tomar una nueva discusión si no he terminado con la anterior:

http://www.forosdelweb.com/showpost....4&postcount=11

Cita:
Iniciado por Casuis Ver Mensaje
También decir que tengo el tutorial sobre Zend Framework acabado pero me quitaron el Blog por no utilizarlo me tendre que abrir uno nuevo en breve lo publicaré lastima que no tenga mucho tiempo
Bueno, cuando quieras tengo lugar en el mío
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
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 10:28.