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

Acceder a una variable privada en una funcion estatica

Estas en el tema de Acceder a una variable privada en una funcion estatica en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas noches a todos, de pronto es una pregunta hasta tonta, pero en verdad estoy hecho una ensalada buscando soluciones. Trato de hacer referencia a ...
  #1 (permalink)  
Antiguo 26/01/2010, 17:59
Avatar de tlaloc_2005  
Fecha de Ingreso: diciembre-2005
Ubicación: Barranquilla
Mensajes: 90
Antigüedad: 19 años
Puntos: 5
Acceder a una variable privada en una funcion estatica

Buenas noches a todos, de pronto es una pregunta hasta tonta, pero en verdad estoy hecho una ensalada buscando soluciones. Trato de hacer referencia a una variable privada dentro de una funcion estatica dentro de una clase php. Sera que me dan una manita.
__________________
Johan J. Gutierrez D.
Ingeniero Industrial, Tecnologo en Sistemas
  #2 (permalink)  
Antiguo 27/01/2010, 07:22
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 18 años
Puntos: 8
Respuesta: Acceder a una variable privada en una funcion estatica

Hola compañero, no creo que puedas hacer tal cosa, veamos haber si alguien se sabe algun truco, pero segun OOP no creo se pueda.

;)
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #3 (permalink)  
Antiguo 27/01/2010, 08:26
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 17 años, 1 mes
Puntos: 14
Respuesta: Acceder a una variable privada en una funcion estatica

No se puede, piensa que es lo que esta haciendo que seguramente hay una mejor solucion para ello :)

Saludos
  #4 (permalink)  
Antiguo 27/01/2010, 09:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Acceder a una variable privada en una funcion estatica

Si la función estatica pertenece a la misma clase puedes hacer algo así:
Código PHP:
Ver original
  1. class Test
  2. {
  3.        private $_name = 'Fulano';
  4.  
  5.        public static function printName()
  6.        {
  7.                $self = new self();
  8.                echo $self->_name;
  9.        }
  10. }
  11.  
  12. Test::printName();

Saludos.
  #5 (permalink)  
Antiguo 28/01/2010, 17:34
Avatar de tlaloc_2005  
Fecha de Ingreso: diciembre-2005
Ubicación: Barranquilla
Mensajes: 90
Antigüedad: 19 años
Puntos: 5
Respuesta: Acceder a una variable privada en una funcion estatica

Que bien, me funciono a las mil maravillas.

No habia respondido antes, por que como en las primeras respuestas al post me dijeron que no se podia, me puse a rehacer el codigo, pero ya estaba que me pegaba un tiro.

menos mal se me dio por volver a entrar al foro. De nuevo muchas gracias.

Una ultima cosita, es que apenas me adentro en la POO en php y bueno ya se que funciona, pero la verdad no se que fue lo que hiciste aqui:


Cita:
Iniciado por GatorV Ver Mensaje
Si la función estatica pertenece a la misma clase puedes hacer algo así:
Código PHP:
Ver original
  1. class Test
  2. {
  3.        private $_name = 'Fulano';
  4.  
  5.        public static function printName()
  6.        {
  7.                $self = new self();
  8.                echo $self->_name;
  9.        }
  10. }
  11.  
  12. Test::printName();

Saludos.
__________________
Johan J. Gutierrez D.
Ingeniero Industrial, Tecnologo en Sistemas
  #6 (permalink)  
Antiguo 28/01/2010, 17:47
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 11 meses
Puntos: 36
Respuesta: Acceder a una variable privada en una funcion estatica

Cita:
Iniciado por tlaloc_2005 Ver Mensaje
Una ultima cosita, es que apenas me adentro en la POO en php y bueno ya se que funciona, pero la verdad no se que fue lo que hiciste aqui:
Dentro del método se crea una instancia de la propia clase y desde ahí accede al método privado (ya que está dentro de la misma definición). Si no fuera un método estático, sería equivalente a hacer:
Código PHP:
Ver original
  1. class Test
  2. {
  3.        private $_name = 'Fulano';
  4.  
  5.        public function printName()
  6.        {
  7.                echo $this->_name;
  8.        }
  9. }
  10.  
  11. // Lo que se hizo fue mover esta instancia dentro de la definición del método.
  12. $test = new Test();
  13. $test->printName();

Ahora, la pregunta es: ¿esa instancia se destruye automáticamente al ejecutarse el método?
__________________
I ♥ The Music!
  #7 (permalink)  
Antiguo 29/01/2010, 10:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Acceder a una variable privada en una funcion estatica

Así es, se destruye al finalizar la ejecución de la función, el Garbage Collector de PHP se encarga de hacerlo.

Saludos.
  #8 (permalink)  
Antiguo 30/01/2010, 19:39
Avatar de tlaloc_2005  
Fecha de Ingreso: diciembre-2005
Ubicación: Barranquilla
Mensajes: 90
Antigüedad: 19 años
Puntos: 5
Respuesta: Acceder a una variable privada en una funcion estatica

Señores muchas gracias por la explicacion, despues de analizarlo (Varias veces, debo reconocer), le veo la logica al asunto, es como hacer una funcion recursiva.

Dentro del metodo estatico cuando se llame no va a existir ninguna instancia de la clase, por lo tanto, tampoco existira ninguno de sus atributos, es por eso que creamos la instancia de la clase dentro del metodo estatico, para poder acceder a sus atributos dentro del contexto del metodo. (creo que es asi el cuento ).

Probablemente acuda muy a menudo al foro, por ayuda. Estoy en medio de un proyecto en PHP algo grande y soy un completo NOOB en esto de la POO.

muchas gracias, nuevamente.
__________________
Johan J. Gutierrez D.
Ingeniero Industrial, Tecnologo en Sistemas
  #9 (permalink)  
Antiguo 30/01/2010, 23:41
 
Fecha de Ingreso: enero-2010
Mensajes: 36
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Acceder a una variable privada en una funcion estatica

Yo creo que tendrías que tener en claro qué es un método estático.
Cuando utilizas objetos hay clases y hay instancias, los objetos son instancias de una clase determinada.
Los métodos NO estáticos son los que se definen para las instancias, en cambio los estáticos son los que se definen para la clase.
Si hablamos en término de objetos y mensajes, cuando la clase recibe un mensaje, se evalúa un método estático. En cambio cuando una instancia recibe el mensaje se evalúa un método no estático.

Comentario al margen para el que le interese: si estudias un poco más de objetos en otros lenguajes de objetos puros cómo Smalltalk o Ruby vas a ver por qué en php y en muchos lenguajes existen los métodos static y de donde viene la palabra "static" y es que justamente son métodos que se resuelve por early binding en lugar de late binding, lo cual los hace no dinámicos.
  #10 (permalink)  
Antiguo 31/01/2010, 07:34
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años, 6 meses
Puntos: 32
Respuesta: Acceder a una variable privada en una funcion estatica

Estimado,

Nos puedes contar para qué quieres entrar en estas complicaciones cuando estimo que podrías hacer algo más directo y sencillo?

POO es más que jugar con sintaxis, a veces respondemos dudas de código sin pregunta siquiera por qué lo están intentando hacer, y tal vez ahí esté el problema, en el diseño de la solución.

Saludos
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #11 (permalink)  
Antiguo 31/01/2010, 09:20
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 17 años, 1 mes
Puntos: 14
Respuesta: Acceder a una variable privada en una funcion estatica

Cita:
Iniciado por enriqueplace Ver Mensaje
estimado,

nos puedes contar para qué quieres entrar en estas complicaciones cuando estimo que podrías hacer algo más directo y sencillo?

Poo es más que jugar con sintaxis, a veces respondemos dudas de código sin pregunta siquiera por qué lo están intentando hacer, y tal vez ahí esté el problema, en el diseño de la solución.

Saludos
Cita:
Iniciado por rodrigo_00 Ver Mensaje
no se puede, piensa que es lo que esta haciendo que seguramente hay una mejor solucion para ello :)

saludos
+1 :p
  #12 (permalink)  
Antiguo 31/01/2010, 13:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Acceder a una variable privada en una funcion estatica

pues no entiendo, para empezar... si la variable es privada, ¿cual necesidad de acceder a ella desde un método estático??

vamos, entiendo que los métodos estáticos son como "públicos", de modo que no le hayo coherencia al problema...

si, en definitiva es un problema de diseño... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: acceder, estatica, funcion, privada, variables
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:49.