Gerd: Parameter zum Klassenaufruf zwischenspeichern

Beitrag lesen

Hey!

Ok, ich versuche es nochmal anders und lasse die beiden letzten Parameter weg. Offenbar hängt ihr euch daran und an den Burgern zu sehr auf.
Nehmen wir einfach mal irgendwelche Rezepte verschiedener Mahlzeiten eines 3-Gänge-Menüs.
Vorspeise: Hühnernudesuppe
Hauptgang: Backfisch
Nachspeise: Sahneeis

Das Rezept für die Suppe wird also gegeben. Jetzt haben wir aber einen Gast der Huhn nicht verträgt. Aus der Hühnernudelsuppe wird eine Nudelsuppe - das Huhn wird weg gelassen obwohl es im Rezept steht. Die Suppe wird also ohne Huhn "instanziert".
Ausserdem haben wir einen Gast der gar keine Suppe will. Das Rezept ist bekannt, es wird aber nichts zubereitet. Das Rezept muss bekannt sein weil es zum Menü gehört und der nächste Gast eventuell auch genau die Suppe haben will die das Rezept verspricht.

Jetzt haben wir also 1 Rezept welches in unterschiedlichen Varianten zubereitet wird - oder auch gar nicht.

Dasselbe analog zum Backfisch und zum Sahneeis.

Bevor also irgend etwas zubereitet wird, muss man wissen was alles da hinein gehört und was alles rein darf und dann daraus die Schnittmenge bilden bzw. das Rezept überspringen wenn ein Gast das Gericht oder gar das komplette Menü verweigert. Die Funktion sammelt in dem Beispiel zunächst die Rezepte des Menüs. Eine andere Funktion, der Koch, kümmert sich dann um die Zubereitung und achtet darauf, dass jeder Gast auch nur bekommt was er bekommen will und bekommen darf. Die Informationen über die Gäste liegen dem Koch neben den Rezepten vor.
foobar('Rezept1', 'Huhn', 'Nudeln', 'Wasser');
Gekocht werden soll new Rezept1('Nudeln', 'Wasser'); // Gast verträgt kein Huhn obwohl der Konstruktor so aussieht __construct($huhn = false, $nudeln = false, $wasser = true){}. Und die Rezepte sind immer verschieden.

Was wäre also eine gute Lösung um die Rezepte zu kochen ohne, dass ich die Konstruktoren zur Angabe der Zutaten verwenden kann weil alle Konstruktoren verschieden sind und der Koch je nach Gast auch noch bestimmte Zutaten weg lassen muss?