__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