| 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: 16 let
|
|||
0