dvestezar.cz

  • Increase font size
  • Default font size
  • Decrease font size
Home Články Joomla Jak použít JCache s funkcí objektu

Jak použít JCache s funkcí objektu

Email Tisk PDF

Jak použít cache například pro funkci objektu

 

//inicializace
$groupname='com_mycomponentname';

// pro první možnost
$cache = & JFactory::getCache($groupname);
 

// pro druhou možnost
$cache = & JFactory::getCache($groupname,'');
//následující cacheid je jen pro druhou možnost, je to jedinečné id pro volanou funkci
$cacheid = 'component_name'.'-'.'modulename'.'-'.'functionname';
//pokud má volaná funkce parametry tak přidat serializované parametry
$cacheid .= serialize($args);
//doporučuje se prohnat MD5
$cacheid=md5($cacheid);

//možnosti použití viz dále


//nastavíme životnost cache, pokud nenastavíme bere se životnost nastavená v administraci
//$cache->setLifeTime(5);
//čas je v minutách - není nikde uvedeno, aspoň vyčtená proměnná lifetime odpovídá nastavení z administrace která je v minutách


//inicializace proměnných

$object = new MyClass .... ;

$fn    = 'NameOfFunctionInObject';


//test cachování - nastavení v konfiguraci administrace

if($cache->getCaching()){

    //následují dvě možnosti, první dokumentovaná !!!!!!!!!!!!!!
     $out = $cache->call( [$object,$fn] );
    //!!! tato možnost může generovat chybu při serializaci objektu (vnitřní zpracování call generuje id cache ze serializace objektu) - Serialization of 'Closure' is not allowed


    //proto lze potom využít druhé možnosti z naším vlastním id, kde ovladač cache potom nic neserializuje a vše bude OK
    $out = $cache->get($cacheid);
    if (empty($out)) {
        $out = $object->{$fn}();
        $cache->store($out, $cacheid);
    }

}else{

    //cesta jak otestovat zapnutí cachování a vyhnout se cachování je na každém
    //stejně tak inicializace cache a id by měla být uzavřená v předchozím bloku, protože je zbytečné je volat, pokud je cache zakázána
   
$out = $object->{$fn}();
}



Aktualizováno Pondělí, 28 Prosinec 2015 07:57