Foros del Web » Programando para Internet » PHP »

PHP OO no usar this

Estas en el tema de no usar this en el foro de PHP en Foros del Web. Hola buenas lo que pasa es que necesito llamar a una funcion desde una clase pero sin usar $this es decir en la funcion de ...
  #1 (permalink)  
Antiguo 23/05/2014, 06:55
Avatar de xlos_mas_pro  
Fecha de Ingreso: mayo-2011
Ubicación: Santiago
Mensajes: 359
Antigüedad: 12 años, 11 meses
Puntos: 11
Pregunta no usar this

Hola buenas lo que pasa es que necesito llamar a una funcion desde una clase pero sin usar $this es decir en la funcion de la clase llamar a una funcion asi mifuncion(); NO asi $this->mifuncion(); como puedo lograr esto
Muchas gracias
  #2 (permalink)  
Antiguo 23/05/2014, 07:34
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: no usar this

Bueno, hay metodos que son auto-invocados dentro de las clases, "metodos magicos" como __construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state() and __clone() pero ademas puedes usar call_user_func() para llamar directamente a los metodos sin $this

Código PHP:
Ver original
  1. <?php
  2.  
  3. Class Foo
  4. {
  5.     private $_bar=null;
  6.  
  7.     public function setBar($p)
  8.     {
  9.         $this->_bar = $p;  
  10.     }
  11.    
  12.     public function getBar()
  13.     {
  14.         return $this->_bar;
  15.     }
  16.    
  17.     public function __construct($p=null){
  18.         //$this->setBar($p);
  19.         call_user_func(array('Foo', 'setBar'),$p);
  20.     }
  21.    
  22.     public function __toString(){
  23.         return 'Hello '.$this->getBar();
  24.     }
  25. }
  26.  
  27. $o = new Foo('Juan');
  28. echo $o;

No se que es lo que quieras hacer
__________________
Salu2!
  #3 (permalink)  
Antiguo 23/05/2014, 07:44
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: no usar this

para llamar tu tufunction(); asi

solo basta con crear tu function fuera de una clase.
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #4 (permalink)  
Antiguo 23/05/2014, 09:12
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: no usar this

O bien, usar un método estático y llamarlo:

Código PHP:
Clase::Metodo(); 
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 23/05/2014, 15:18
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: no usar this

Caramba esto lo resolvias leyendo el manual:
Cita:
All functions and classes in PHP have the global scope - they can be called outside a function even if they were defined inside and vice versa.
Esto quieres decir que si declaras una función fuera de la clase la puedes invocar desde algún método de esa clase.
También si declaraste una función dentro de un método de una clase, después de invocar el método la función queda disponible de forma global y puede llamarse fuera de la clase.
Y en versiones recientes puedes declarar una función anónima o no y usarla dentro de ese método inmediatamente después de su declaración.

La comprobación la haces tú, por que esto tiene olor a tarea de estudiante.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: clase, class
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:30.