Statische variable in Funktion gesetzt durch den Aufruf einer anderen Funktion

Arbeite ich in der PHP.

Ich habe eine Funktion (F1), die aufgerufen wird, eine variable Anzahl von Zeiten. Innerhalb dieser Funktion, muss ich zum laden eine Konstante Datensatz aus einer anderen Funktion (F2). Es ist immer der gleiche Datensatz geladen, aber das laden der set beinhaltet eine Datenbank-lookups und-Verarbeitung. Anstatt rufen Sie F2 wiederholt und erhöhen overhead/Redundanz/Anforderungen an die Verarbeitung, ich würde gerne das Ergebnis in einer statischen Variablen in F1. Jedoch, aus welchem Grund auch immer, es wird mir nicht erlauben, legen Sie die variable als statisch mit dem Aufruf der Funktion.

Einem code-Beispiel:

function calledRepeatedly() {
    static $dataset = loadDataset();
    //some minor processing here using the dataset
    //and probably a loop
    return "stuff";
}
function loadDataset() {
    //intensive dataset load code
    //plus a database lookup or two
    //whatever else
    return array(
        "data1",
        "data2"
    );
}

Die oben NICHT funktioniert. Es führt zu einer Fehlermeldung -- unexpected '(', expecting ',' or ';'.

Mir ist klar, dass es funktionieren würde, und es würde durch Verweis übergeben wodurch overhead, jedoch beinhaltet, dass die zusätzliche Arbeit, um sicherzustellen, dass Anrufe zu calledRepeatedly tatsächlich sind die Daten in der Argumente-Liste.

Gibt es eine Möglichkeit, dies zu tun?

  • Sie können nicht speichern von Ausdrücken in eine statische variable. Sie sind entschlossen, auf compile-Zeit, also kann die Funktion nicht aufgerufen werden noch. Ich weiß nicht, ob php unterstützt statische Funktionen.
  • wie wäre es mit einer Klasse und speichern Sie Sie in eine Immobilie? 😉
  • nur innerhalb der Klassen.
  • Wenn die Funktion kann nicht aufgerufen werden, dann würde eine größere Menge Sinn, um den code in seine eigene Klasse.
InformationsquelleAutor Nathaniel | 2010-12-07
Schreibe einen Kommentar