Hi!
Schreibe gerade an einer Authentikation und Authorisationsklasse (Auth) für mein Basisframework.
Die Klasse enthält eine Methode isPermitted() welche von mehreren Klassen, die von Auth erben, aufgerufen wird. Die Funktion dient dazu einen Wert aus einer Tabelle zu lesen, welcher die weitere Ausführung des aufrufenden (Kind)-Scripts zulässt oder eben verweigert.
Für jede Klasse, die isPermitted() aufruft hab ich eine eigene Tabelle angelegt, z.B. für die Klasse Foo_Bar existiert die Tabelle foo_bar mit einer Rechtematrix (in den Spalten stehen die Funktionsnamen der Klasse, die Zeilen symbolisieren unterschiedliche Rollen).
Innerhalb der Klasse Foo_Bar könnte der Konstruktor also wie folgt aussehen:
Damit ich nicht für jede Klasse ein eigenes SQL-Statement basteln muss, mit dessen Hilfe ich mir den Rechtevektor aus der DB hole, hab ich mir überlegt, ob man das nicht automatisieren könnte.
Meine Frage nun: Gibt es eine Funktion, die es erlaubt den Namen einer Klasse festzustellen, die eine bestimmte Funktion aufruft?
Die Funktion Auth#isPermitted() soll also Foo_Bar ausgeben, wenn der Konstructor w.o. gezeigt abgearbeitet wird.
TIA
PS: Über alternative Varianten, wie eine solche Klasse aussehen könnte würde ich mich freuen.
Schreibe gerade an einer Authentikation und Authorisationsklasse (Auth) für mein Basisframework.
Die Klasse enthält eine Methode isPermitted() welche von mehreren Klassen, die von Auth erben, aufgerufen wird. Die Funktion dient dazu einen Wert aus einer Tabelle zu lesen, welcher die weitere Ausführung des aufrufenden (Kind)-Scripts zulässt oder eben verweigert.
Für jede Klasse, die isPermitted() aufruft hab ich eine eigene Tabelle angelegt, z.B. für die Klasse Foo_Bar existiert die Tabelle foo_bar mit einer Rechtematrix (in den Spalten stehen die Funktionsnamen der Klasse, die Zeilen symbolisieren unterschiedliche Rollen).
Innerhalb der Klasse Foo_Bar könnte der Konstruktor also wie folgt aussehen:
PHP-Code:
class Foo_Bar extends Auth
{
public function __construct()
{
if($this->isPermitted()) {
// Programm wird fortgesetzt
} else {
// Programm mit einer Fehlermeldung, die auf die benötigten
// Rechte hinweist, abbrechen
}
}
}
Meine Frage nun: Gibt es eine Funktion, die es erlaubt den Namen einer Klasse festzustellen, die eine bestimmte Funktion aufruft?
Die Funktion Auth#isPermitted() soll also Foo_Bar ausgeben, wenn der Konstructor w.o. gezeigt abgearbeitet wird.
TIA
PS: Über alternative Varianten, wie eine solche Klasse aussehen könnte würde ich mich freuen.
Kommentar