Wie meinst du das - dass zB die News-Klasse auf nur bestimmte Funktionen der Foren-Klasse zugreifen kann? Also die Anzahl der Threads ermitteln darf, aber nichts neues Eintragen kann? Ohne PHP5 auch noch..
Ich weiß nicht ob es dafür bereits Design-Pattern gibt (wahrscheinlich schon, möglicherweise Zustands/State-Pattern).
Die Klasse X die auf Klasse Y zugreifen möchte identifiziert sich bei dieser. Diese ändert daraufhin ihren Zustand und gibt entweder das angeforderte Ergebnis oder einen FALSE oder NULL Wert.
PHP-Code:
<?php
class X
{
function X()
{
$y = new Y();
$y->setState(__CLASS__); // __CLASS__ ab 4.3.0 verfügbar
echo $y->getInfoA();
}
}
class Y
{
var $state;
function Y()
{
$this->state = 0;
}
function setState($ident)
{
switch (strtoupper($ident)) {
case 'KLASSE_A':
case 'KLASSE_B':
$this->state = 0; // keine Rechte
break;
case 'X':
case 'KLASSE_Z':
$this->state = 1; // mehr Rechte
break;
}
}
function getInfo()
{
if ($this->state > 0) {
return 'eigentliche Funktionsantwort';
} else {
return FALSE;
}
}
}
?>
Bin allerdings nicht sicher ob das Zustands-Pattern wirklich das richtige ist. Dass dadurch dein kompletter Code, jede einzelne Methode aufgebläht wird durch die Zustands-Abfrage muss dir klar sein.
Meine Meinung: Das ist die Mühe, erst Recht mit PHP4 nicht wert. Lieber PHP5 benutzen, Ableiten und protected/private Funktionen benutzen.