Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] uruchamianie funkcji o nazwie przekazanej w zmienej
rudolf35
post 2.03.2010, 18:47:33
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 17.10.2007

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


próbuję w konstruktorze klasy uruchomić funkcję przekazaną w zmiennej. Np w zmiennej $funkcja jest nazwa funkcji "test" i chcę ją uruchomić w taki sposób: $funkcja(); Ale wyrzuca mi błąd:
Cytat
Fatal error: Call to undefined function test()

Chociarz funkcja napewno jest zadeklarowana w klasie... Jakieś pomysły?
Go to the top of the page
+Quote Post
mortus
post 2.03.2010, 18:59:52
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


call_user_func powinno zadziałać.
Go to the top of the page
+Quote Post
darko
post 2.03.2010, 19:02:09
Post #3





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


I w czym problem?
  1. function test() {
  2. echo "a test() has been called";
  3. }
  4. class A {
  5. function __construct($fname) {
  6. call_user_func($fname);
  7. echo "a constructor of class A has been called";
  8. }
  9. }
  10. $a = new A("test");

Zerknij do manuala

// edit
Jeśli funkcja jest zdefiniowana w klasie (czyli jest metodą klasy B ), to:

  1. class B {
  2.  
  3. function __construct($fname) {
  4. $this->$fname();
  5. echo "a constructor of class A has been called";
  6. }
  7.  
  8. public function test() {
  9. echo "B::test()";
  10. }
  11. }
  12. $b = new B("test");


Ten post edytował kwiateusz 3.03.2010, 10:35:21


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
mls
post 2.03.2010, 21:54:06
Post #4





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


Jeśli jest to funkcja wewnątrz klasy, to można tak:
  1. $nazwafunkcji = 'funkcja';
  2. $this->$nazwafunkcji();

lub
  1. $nazwafunkcji = 'funkcja';
  2. call_user_func(array($this, $nazwafunkcji));


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 05:29