Foros del Web » Programando para Internet » PHP »

Duda sobre clase / Objetos

Estas en el tema de Duda sobre clase / Objetos en el foro de PHP en Foros del Web. Hola a todos. Estoy definiendo una clase, y necesito utilizar dentro de ella el nombre de la variable que se utiliza para instanciar esa clase. ...
  #1 (permalink)  
Antiguo 26/05/2003, 07:26
 
Fecha de Ingreso: abril-2003
Mensajes: 5
Antigüedad: 14 años, 7 meses
Puntos: 0
Duda sobre clase / Objetos

Hola a todos. Estoy definiendo una clase, y necesito utilizar dentro de ella el nombre de la variable que se utiliza para instanciar esa clase.

Ejemplo:
Código PHP:
$menuuni = new Menu_php(); 
Imaginemos que tengo una función llamada set_nombremenu dentro de la clase:
Código PHP:
function set_apartadomenu($apartado) {
   
$this->apartdomenu=$apartado "menuuni";

Mi duda es como puedo obtener la cadena "menuuni" que es el nombre de la instacia de la clase Menu_php. Que tenemos referencia por $this. Porque se perfectamente como trabaja, pero no se como podria obtener el nombre de $menuuni.

A ver si alguien me puede hechar una mano.

Gracias por adelantado.
  #2 (permalink)  
Antiguo 26/05/2003, 07:49
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
la verdad que no tiene mucho sentido pero bueno, lo que quieres hacer es recojer el nombre que instacia la clase no es asi?, por que no le pasas al constructor de la clase un parametro que sea el nombre de la clase?¿ lo guardas en una varialbe y luego la utilazas en el resto de la casle, es decir:

Código PHP:
$menuuni = new Menu_PHP("menuuni"); 
Ahi le pasarias al constructor de la clase la cadena mnuuni que es el nombre con el que declaras instancias la clase, luego la clase te podria quedar asi:

Código PHP:
class Menu_PHP{
var 
$clase;
function 
Menu_PHP($nombre)
{
$this->clase $nombre;
}

Y de esa manera tendras el nombre de la clase en toda la clase y la podras utilizar cuando y donde quieras.

JEJE pero despues de todo esto puedes hacerlo usando la funcion get_class($obj) :) que te devuelve el nombre del objeto :)

Usea asi:
Código PHP:
$menuuni = new Menu_PHP;
echo 
get_class($menuuni); 
Para ello lo ideal es que a tu metodo le añadas un paramatro mas en el cual se pase el nombre:
Código PHP:
function set_apartadomenu($apartado$objeto) {

   
$this->apartdomenu=$apartado $objeto;


Y que objeto lo pilles asi:
Código PHP:
$objeto get_class($menuuni);
$menuuni->set_apartadomenu($apartado$objeto): 
MIrate la referencia de funciones de funciones con objetos y clases de PHP:

http://www.php.net/manual/es/function.get-class.php
http://www.php.net/manual/es/ref.classobj.php
__________________
Usuario registrado de Linux #288725
  #3 (permalink)  
Antiguo 26/05/2003, 08:24
 
Fecha de Ingreso: abril-2003
Mensajes: 5
Antigüedad: 14 años, 7 meses
Puntos: 0
Lo primero muchas gracias. La verdad es que tienes razon, ademas despues me he dado cuenta que tenia que pasar el nombre del menu como parametro, porque lo utilizo para mas cosas.

La referencia de php me la he mirado, pero no viene como hacer referencia al nombre del objeto. Podemos usar varias funciones para obtener los metodos y las propiedades de una clase, pero no el nombre del objeto.

Usare el contructor con paremetro. Muchas gracias.
  #4 (permalink)  
Antiguo 26/05/2003, 08:57
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
Para recojer el nombre del objeto get_class() creo que era eso pero weno .... la alternativa cutre era la de pasarlo al constructor jeje
__________________
Usuario registrado de Linux #288725
  #5 (permalink)  
Antiguo 26/05/2003, 14:19
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

La funcion get_class() devuelve el nombre de la clase a la que pertenece el objeto, no el nombre del objeto.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 06:10.