Ich versuche mal den Call-Stack zu verdeutlichen, damit meine Frage gleich besser verständlich ist. Die Datei, welche vom Browser aufgerufen wird, sieht wie folgt aus:
require_once 'lib/admin_controller.php';
$controller = new AdminController();
$controller->execute($_REQUEST);
?>
Die Klasse AdminController, implementiert das FrontController Pattern. Mehr dazu gleich. Der Execute-Methode werden über $_Request, alle Eingabedaten übergeben. Innerhalb der Methode werden diese dann in Form eines Objektes gekapselt, welches das RequestHelper Pattern implementiert:
public function execute($request) {
$input = new RequestHelper($request);
$this->initApplication();
$this->handleRequest($input);
}
Der FrontController verfügt über ein Mapping zwischen Kommando-Namen und Klassen. In der Methode handleRequest, wird aus dem RequestHelper Objekt der Name des Kommandos bestimmt, die zugehörige Kommando-Klasse instanziert und die weitere Arbeit an das neu erstellte Objekt übergeben.
Die jeweiligen Kommandoklassen enthalten also die Geschäftslogik, die ihrerseits wieder auf weitere Klassen und Objekt zugreift.
Jetzt zu meiner Frage:
Mir ist es eigentlich zu doof, das RequestHelper-Objekt ständig durch zu reichen, was ich machen müsste, da alle beteiligten Klassen darauf zugreifen können müssen, da hier alle Eingabedaten, Ausgabedaten und Fehler drin gesammelt werden. Jetzt ist meine Überlegung, den RequestHelper einfach als Singelton zu implementieren. Da es aber beim Singelton immer mal zu Problemen kommen kann, je nachdem in welcher Umgebung man es verwendet, ist meine Frage, ob es mit Singeltons in PHP irgendwelche Probleme geben kann? Ist es sichergestellt, dass das RequestHelper Objekt immer nur im Kontext seines Benutzers vorhanden ist?
Freue mich auf Eure Einschätzung/Erfahrung.