Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wykonanie metody podanej jako string
Forum PHP.pl > Forum > Przedszkole
arzach
Witam mam taki kod
  1. class eps {
  2. public function __construct($user_id, $cat_point, $method_name){
  3. $this->$method_name;
  4. }
  5. public function update_point($update){
  6. return $update;
  7. }
  8.  
  9. }
  10.  
  11. $eps = new Eps(12, 'A', 'update_point(14)');
  12.  

I czy da się wykonać metodę która jest podana jako string z podanym parametrem questionmark.gif?

Próbowałem użyć call_user_func ale to nic nie pomogło.

Samą metodę bez parametru jako string wiem jak zrobić ale czy da się z parametrem wywołać ?
erix
Cytat
Próbowałem użyć call_user_func ale to nic nie pomogło.

Pokaż, jak próbowałeś, bo to jest odpowiedź.
arzach
Próbowałem różne sposoby i nie działa.


  1. class eps {
  2.  
  3. public $method_name;
  4.  
  5. public function __construct($user_id, $cat_point, $method_name){
  6. $this->method_name = $method_name;
  7. call_user_func(array(__CLASS__, $this->method_name));
  8. }
  9. public function update_point($update){
  10. return $update;
  11. }
  12.  
  13. }
  14.  
  15. $eps = new Eps(12, 'A', 'update_point(14)');
  16.  
  17.  


I metoda update_point() powinna zwrócić 14
Mephistofeles
O ile dobrze myślę musisz osobno podać nazwę i argumenty funkcji.
Skie
Kolega wyżej ma rację - funkcja call_user_func przyjmuje jako pierwszy argument tablicę określającą, o którą funkcję chodzi, natomiast drugi argument dopiero parametry. Więc Twój kod powinien wyglądać tak:

  1. class eps {
  2.  
  3. public $method_name;
  4.  
  5. public function __construct($user_id, $cat_point, $method_name, $mathod_params = false){
  6. $this->method_name = $method_name;
  7. call_user_func(array($this, $this->method_name), $method_params);
  8. }
  9. public function update_point($update){
  10. return $update;
  11. }
  12.  
  13. }
  14.  
  15. $eps = new Eps(12, 'A', 'update_point', array(14));
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.