Autor | Zpráva | ||
---|---|---|---|
Fuckin Profil * |
#1 · Zasláno: 4. 5. 2009, 21:08:56
Hledam ale jaksi sem zatim nikde toto nenasel, lze nejakou funkci zjistit jaka je nastavena viditelnost u dane metody v uvedene tride?
Jde o to ze instance a metody spoustim pres $_GET a potrebuju zajistit aby se spoustely pouze metody public...jinak to stejne vyhodi error, a tomu prave chcu zabranit....nejake napady? |
||
Mastodont Profil |
#2 · Zasláno: 4. 5. 2009, 21:12:11
|
||
Fuckin Profil * |
#3 · Zasláno: 4. 5. 2009, 21:17:10
Diky, jeste jsem to nejak moc nestudoval, ale moc me to neprijde jako jednoduche reseni...
|
||
AM_ Profil |
#4 · Zasláno: 4. 5. 2009, 21:22:02
No ono to co se snažíš udělat není zrovna standardní věc, já bych to řešil spíš nějak takhle:
class callableFromGet{ private function echoAhoj(){ echo 'ahoj'; } public function echoNazdar(){ echo 'nazdar'; } public function echoCau(){ echo 'cau'; } public function _callMethod($method){ switch ($method){ case 'echoNazdar': $this->echoNazdar();break; case 'echoCau': $this->echoCau();break; default: throw new Exception('metoda neexistuje nebo k ni nemate pristup'); } } } Není to sice tak plně automatické, jako přes reflection, ale podle mě je to i lepší - co když nastane situace, kdy budeš potřebovat public metodu, kterou ale bude volat jen skript, ale ne uživatel? |
||
Fuckin Profil * |
#5 · Zasláno: 4. 5. 2009, 21:31:22
Kdyz to nevola uzivatel tak nechapu proc by tam nemohlo byt private...to nemuze volat skript ?
Ono toto reseni me taky napadlo ale je to dosti neprakticke uz z toho duvodu ze budu muset vsechny metody ktere chci spoustet dopisovat rucne atd, chci mit kod dobre optimalizovany, uz z toho duvodu ze to je rozsahly projekt, opravdu neni jine reseni? |
||
AM_ Profil |
#6 · Zasláno: 4. 5. 2009, 22:02:53
„Kdyz to nevola uzivatel tak nechapu proc by tam nemohlo byt private...to nemuze volat skript ?“
private znamená viditelnost pouze z dané třídy, čili ve zbylých částech skriptu skutečně ne. To je rozdíl mezi public a private, volání skrz _GET požadavek nemá s viditelností nic co dočinění (stejně to nakonec volá skript a vybírá metodu na základě GET parametru). Osobně si myslím, že volat metody takhle není moc chytrý nápad (uživatel by se neměl dostávat tak blízko kódu), docela by mě zajímalo, k čemu to je... pokud to není něco jako "online tester objektů", vykašlal bych se na tenhle koncept úplně a řešil problém nějakou schůdnější cestou (jeden switch pokrývající všechny akce považuji za schůdnější cestu). |
||
Časová prodleva: 15 let
|
0