Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wykonanie metody podanej jako string
arzach
post
Post #1





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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ć ?

Ten post edytował arzach 30.10.2010, 08:44:50
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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

Pokaż, jak próbowałeś, bo to jest odpowiedź.
Go to the top of the page
+Quote Post
arzach
post
Post #3





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

Ostrzeżenie: (0%)
-----


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

Ten post edytował arzach 30.10.2010, 11:03:05
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #4





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


O ile dobrze myślę musisz osobno podać nazwę i argumenty funkcji.
Go to the top of the page
+Quote Post
Skie
post
Post #5





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----


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));


Ten post edytował Skie 30.10.2010, 13:03:06
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 15:47