pl: warum nicht selbst cachen

Beitrag lesen

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?