Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Operator rozróżnienia zasięgu (::) i zmienne zmienne
Forum PHP.pl > Forum > Przedszkole
erix
Sytuacja:
  1. <?php
  2. class klasa{
  3. function metoda(){
  4. //operacje
  5. }
  6.  
  7. function metoda2(){
  8. $nazwa = 'metoda';
  9. $this->{$nazwa};
  10. }
  11. }
  12. ?>

Moje pytanie: w jaki sposób odwołać się do którejś z metod bez tworzenia nowej instancji klasy via zmienne zmienne?

Zły kod:
  1. <?php
  2. $nazwa = 'klasa';
  3. {$nazwa}::metoda();
  4. ?>


Jak to ugryźć?
siemakuba
call_user_func" title="Zobacz w manualu php" target="_manual

1. masz instancję klasy i chcesz wykonać metodę z tej klasy
  1. <?php
  2. $class = new SampleClass;
  3. $method = 'SampleMethod';
  4.  
  5. call_user_func(array($class, $method));
  6. ?>


2. nie masz instancji klasy i chcesz wykonać metodę statycznie
  1. <?php
  2. $class = 'SampleClass';
  3. $method = 'SampleMethod';
  4.  
  5. call_user_func(array($class, $method));
  6. ?>


pozdr.
erix
Zabrakło mi wyrazu ;P

Chodziło mi o statyczne smile.gif
Tylko, co będzie szybsze/lepsze? call_user_func" title="Zobacz w manualu php" target="_manual, czy kombinowanie przez eval" title="Zobacz w manualu php" target="_manual?
siemakuba
Cytat
Tylko, co będzie szybsze/lepsze?

Zdecydowanie call_user_func" title="Zobacz w manualu php" target="_manual, do tego przecież służy :)

pozdr.
erix
Dzięki, siemakuba!
Dokładnie o to mi chodziło.
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.