Tandil: Doppelte Aufrufe von Funktionen vermeiden

Beitrag lesen

Guten Tag,

ich habe vor, den Code auf meiner Seiten mit Klassen auf den neusten Stand zu bringen und somit auch schneller zu machen.

Als Beispiel möchte ich Berechtigungen auf der Homepage verwenden.
So soll überprüft werden, ob ein Nutzer über die nötige Berechtigung verfügt, um einen Newsbeitrag zu schreiben. Diese Berechtigung habe ich vor, anhand von Bits zu speichern.

Bisher habe bin ich immer folgendermaßen vorgegangen:

  
function userHasPermission() {  
   $query = mysql_query("SELECT permission FROM permissions WHERE userid = '".$_SESSION['userid']."' AND permission > 0 LIMIT 1");  
if (mysql_num_rows($query) > 0)  
 return true;  
else return false;  
}  
  
if (userHasPermission()) {  
   // ... Eingabefeld folgt hier  
}

Jetzt kann es allerdings sein, dass dieselbe Abfrage auf der selben Seite öfters durchgeführt werden muss. Nun wäre es dann aber so, dass die Funktion öfters aufgerufen würde und somit die Berechtigung öfters überprüfen würde, obwohl es ja einfacher wäre, die Abfrage einmal durchzuführen und diese dann zu speichern.

Ich hatte das Gefühl, dass dies eventuell mit Klassen realisierbar wäre. Allerdings habe ich damit noch nicht so viel Erfahrung. Kann es sein, dass __construct() dort helfen würde oder gibt es eine andere Möglichkeit, mehrfache Abfragen zu verhindern?
Theoretisch könnte man bei Berechtigungen das ganze eh schon einmal vorher abfragen und in einer Konstante speichern, was dann beim Bitvergleich ja überall klappen würde. Aber generell bei anderen Funktionen, die nicht immer gebraucht würden, wäre dies nicht praktisch.