Autor | Zpráva | ||
---|---|---|---|
Jimilo Profil * |
Zdravím,
potřebuji poradit s parametrickým voláním statických metod nebo funkcí: něco jako následující kód nefunguje (např. pro inicializaci singletonu): $singleton='classSingleton'; $instance=$singleton::getInstance(); //toto nefunguje Netuší někdo, jak na věc? Díky moc |
||
martindeveloper Profil |
#2 · Zasláno: 24. 5. 2010, 14:32:31 · Upravil/a: martindeveloper
class Test { public static function doSomeStuff() { return true; } } $bool = Test::doSomeStuf(); EDIT: Asi jsem to blbě pochopil, pokud to teď chápu dobře, tak následující kód pomůže : class Test { public function get() { echo 1; } } $class = "Test"; call_user_func($class . "::get"); //vypíše 1 |
||
Nox Profil |
#3 · Zasláno: 24. 5. 2010, 14:41:17
Jimilo:
To co jsi se tu pokusil napsat se dělá takto: http://en.wikipedia.org/wiki/Singleton_pattern#PHP |
||
Jimilo Profil * |
#4 · Zasláno: 24. 5. 2010, 14:42:42
martindeveloper:
Díky za rychlou reakci, ale měl jsem na mysli: s názvem třídy jako parametrem proměnné. Klasický konstruktor není problém volat následovně: $nameClass='Test'; $test=new $nameClass(); //toto funguje ale konstrukce s voláním statické metody (např. pro inicializaci singletonu) již bohuže nefunguje: $nameClass='Test'; $test=$nameClass::getInstance(); //toto funguje |
||
martindeveloper Profil |
#5 · Zasláno: 24. 5. 2010, 14:44:13 · Upravil/a: martindeveloper
Jimilo:
Viz můj edit :) |
||
Jimilo Profil * |
#6 · Zasláno: 24. 5. 2010, 14:46:18
Poslední řádek samozřejmě NEfunguje. Prozatím se mi toto podařilo vyřešit jen pomocí všemocné funkce "eval".
P.S.: Návrhový vzor Singleton samozřejmě znám, jen jsem jej použil jako příklad... |
||
Jimilo Profil * |
#7 · Zasláno: 24. 5. 2010, 14:48:24
martindeveloper:
Díky moc, jasné a průhledné... - pro mě tupíka! :-) |
||
Majkl578 Profil |
#8 · Zasláno: 24. 5. 2010, 15:21:43
Tebou uvedený kód funguje od verze 5.3. (Osobně už starší verze PHP neřeším, programuji pro 5.3).
|
||
Časová prodleva: 14 let
|
0