Natürlich kannst Du Rückgabewerte von Funktionen cachen. Daß der Cache statisch sein muss hast Du ja schon richtig erkannt. So kannst den cache auch in der Funktion selbst deklarieren:
echo mal2(2), "\n", mal2(2), "\n", mal2(2), "\n", mal2(3);
function mal2($x){
static $cache = array ();
if( isset($cache[$x]) ){
print "hit!\n";
return $cache[$x];
}
else{
$cache[$x] = 2*$x;
return $cache[$x];
}
}
Nur als Beispiel um das Prinzip zu zeigen. Kann praktisch noch viel mehr machen und auch DB Abfragen bzw. deren Ergebnisse cachen.
MfG
PS: In Perl gibts ein Modul Memoize da wäre nur der Name der Funktion zu übergeben und schon wird gecached, auch mit Builtinfunktionen. Vielleicht gibt ja sowas auch für PHP?