Wenn ich dich richtig verstanden habe, siehst du folgenden Nachteil:
Problem: Die Daten aus dem $_GET-Array werden unbehandelt übertragen und können am Ort wo sie eingesetzt werden Schaden verursachen.
Lösung: Das $_GET-Array in ein eigenes Array laden und die Werte überprüfen/modifizieren/etc. und erst dann den verschiedenen Klassen übergeben.
Ich habe eine Klasse namens Controll, welche für jeden Seitenaufruf die Parameter überprüft.
Beispiel: "index.php?mid=1&smid=1&edit=214
PHP-Code:
if($mid==1) {
if($smid == 1 && $acc_arr['AccNewsWrite'] == 0) {
$access = false;
}
if(isset($_GET['edit'])) {
$author_id = Mysql::db_fetch_data(Mysql::db_select_data("NwAuthor", "news", "NwID=".$_GET['edit']));
if($_SESSION['UserNickname'] != $author_id['NwAuthor']) { $access = false; }
}
if(isset($_GET['cat']) && $_GET['cat'] == 6) {
if($acc_arr['AccNewsInternRead'] == 0) { $access = false; }
}
}
Die Variable $access wird dann zurückgegeben und führt dazu, dass der User auf die Seite forbidden.html umgeleitet wird.
Ist das ungenügend? Was würdest du zusätzlich dazu an Sicherungen einbauen? Parameterwerte überprüfen, also zum Beispiel ob der Wert des Edit-Parameters wirklich ein Integer ist, etc.?
Edit: Hatte etwas lange an meinem Post, darum habe ich deinen Zusatz noch nicht gesehen. Der Entscheidende Vorteil ist also, dass man die Parameter sieht, die in einer Funktion wirken. Das leuchtet mir ein. Ich werde mal sehen, wie ich das am besten angehe.