Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Dynamiczne wywołanie statycznej metody, Coś a'la $className :: method ()
UDAT
post
Post #1





Grupa: Zarejestrowani
Postów: 442
Pomógł: 0
Dołączył: 27.12.2005

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


Jak wywołać metodę statyczną z klasy abstrakcyjnej mając jej nazwę w zmiennej?

  1. <?php
  2. $className :: method ();
  3. ?>

daje wynik:
Kod
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM


Natomiast klasa ReflectionMethod ma metodę invokeArgs jednak wymaga ona podania obiektu.
Także nic nie daje:
  1. <?php
  2. $className = 'foo::bar';
  3. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://pl.php.net/manual/pl/function.call-user-func.php

Przenosze na przedszkole


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
dr_bonzo
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


A czemu nazwa klasy (ktorej metoda ma byc wywolana) ma zalezec od wartosci zmiennej?
Wyglada na to ze przyda ci sie polimorfizm -- utworz podklasy z roznymi implemetacjami metody "method()" i wywoluj ja na obiekcie.

http://hanuska.blogspot.com/2006/08/swich-...-smell-and.html
co prawda kod w javie ale spojrz na problem (co prawda nie masz switcha, ale funkcja ktora wywolasz jest zalezna od wartosci $className) i rozwiazanie

----
edit: chociaz to co robisz to "prawie jak" polimorfizm, tylko ze stosuje sie go dla obiektow a nie klas.
W rubym by to przeszlo -- nazwa klasy tez jest obiektem + duck typing


--------------------
Nie lubię jednorożców.
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 Aktualny czas: 22.08.2025 - 02:03