__call vs minden rutinban ellenőrzés
Üdv,
van a Zend Framework -nek egy AMF (Flash/Flex) kezelő rutingyűjteménye, amelyben egy osztályt lehet regisztrálni és az AMF hívások ezen osztály rutinjait hívja meg a megfelelő paraméterekkel. Namost eddig nincs is gond, működik tökéletesen, de szerettem volna minden egyes osztály minden funkcióját kiegészíteni egy kóddal, amely figyeli, hogy még él e a session. / Ezek a rutinok mind publikusak, ami egyértelmű /
Ennek a session figyelő rutinnak a meghívásán gondolkodtam el. Elég macerás és hibához vezethet az a módszer, hogy minden rutin első sorában meghívjam a session tesztelő rutint. Erre gondoltam én, hogy mi lenne ha ezeket a rutinokat átnevezném / prefix / és private-ra állítom és kihasználnám a __call és switch php elemeket.
valahogy így képzeltemSzerintetek ez járható út vagy esetleg van más megoldás, amire eddig nem gondoltam?
Hogyan alakulhat a teljesítmény _call esetén, ha van ebben tapasztalatotok?
Mire kell még ügyelni, amire nem gondoltam eddig?
Üdv
Sanyi
■ van a Zend Framework -nek egy AMF (Flash/Flex) kezelő rutingyűjteménye, amelyben egy osztályt lehet regisztrálni és az AMF hívások ezen osztály rutinjait hívja meg a megfelelő paraméterekkel. Namost eddig nincs is gond, működik tökéletesen, de szerettem volna minden egyes osztály minden funkcióját kiegészíteni egy kóddal, amely figyeli, hogy még él e a session. / Ezek a rutinok mind publikusak, ami egyértelmű /
Ennek a session figyelő rutinnak a meghívásán gondolkodtam el. Elég macerás és hibához vezethet az a módszer, hogy minden rutin első sorában meghívjam a session tesztelő rutint. Erre gondoltam én, hogy mi lenne ha ezeket a rutinokat átnevezném / prefix / és private-ra állítom és kihasználnám a __call és switch php elemeket.
valahogy így képzeltem
- <?php
- class Service1_AMF
- {
- private function _rutin1( $param1 )
- {
- }
- public function __call($name, $arguments)
- {
- //@TODO fugvenynev ellenorzes es parameterszam ellenorzes (ez plusz hibahoz vezethet)
- $fname = '_' . $name;
- switch( $name )
- {
- case 'rutin1':
- $this->$fname($arguments[0]);
- break;
- }
- }
Hogyan alakulhat a teljesítmény _call esetén, ha van ebben tapasztalatotok?
Mire kell még ügyelni, amire nem gondoltam eddig?
Üdv
Sanyi
Konstruktor?
Ugyan nem ertek a Zend AMF-es bizbaszahoz, de ahogy latom itt nem statikus metodusokrol van szo, ergo peldanyositja azt az osztalyt(legalabbis remelem hogy nem hanyja magabol a stricteket). Azaz ezt a session ellenorzest siman megcsinalhatod konstruktorbol is ha jol ertem a problemadat.
...
-> igen, nekem is ez volt az első gondolatom (persze ki is próbáltam anno), de a konstruktorban - példányosításkor - sajnos még nem kezeli a kimenetet az AMF-s osztály, így csak a függvényben magában tudom megnézni.
Üdv
Sanyi
Lassú
Az biztos, hogy a __call lényegesen lassabb, mint a sima hívás, de ha nem ez a szűk keresztmetszet, akkor akár apró áldozatnak is tekintheted a jó ügy érdekében :-)
A switch-et meg kiválthatod egy is_callable() hívással.
Ennél jobb ötletem nekem sincs a probléma megoldására...
Üdv: Norbi
...
Üdv
Sanyi