Hallo liebe Community,
ich habe erst vor kurzem begonnen mich mit der OOP in PHP zu beschäftigen. Ich bin auf eure Antworten gespannt, da mir die Lösung irgenwie verwehrt bleibt.
So sind die Klassen gerade verteilt, oder sollen sie. Das Problem welches ich nicht lösen kann ist, dass in [color=blue]CBearbeiten::macheWasFunc[/color]X beide Variablen [color=blue]CMain::Array1[/color] und [color=blue]CMain::Array1[/color] verändert werden sollen.
Das ganze ist -für mich- so kompliziert, weil ich eigentlich die beiden Arrays validieren und später bearbeiten möchte. Ich will validieren und bearbeiten in zwei verschiedene Funktionen auslagern, da sich die Länge und Inhalte der Arrays je nach aufgerufener Seite ändern.
Leider sieht es dann aber so aus, dass ich an einer Stelle eine Switch-Anweisung habe, die Abfragt, welche keys zulässig sind. In einer anderern Funktion ist eine zweite Switch-Anweisung mit genau den gleichen Cases, die aber Code zum verändern der Arrays enthält.
Ärgerlich ist jetzt die Tatsache, dass ich den Code an zwei Stellen ändern muß, wenn sich die Keys verändern (z.B. weil ich einen Rechtschreibfehler hatte.). Meine Idee war jetzt es irgenwie hinzubekommen, dass ich die Klassen habe, in denen Methoden zum Bearbeiten von Array1 und Array2 existieren.
Grob skizziert aus:
sollte etwas werden bei dem ich den Source nur noch an einer Stelle ändern muss. Ich hoffte das mit Klassen erledigen zu können, bei der ich von einer Abstrakten Basisklasse ableite, die beide Funktionen [color=blue]bearbeiten[/color] und [color=blue]validieren[/color] enthält. Die überschreibenden Klassen sollten dann nur noch für jeden einzelnen Key einmal geschrieben werden und irgendwie (?) an die [color=blue]CMain[/color] angefügt werden.
Ich hoffe, ich habe es vernünftig rüber gebracht. Für Lösungvorschläge bin ich vollkommen offen, da ich leider die Lösung nicht erkenne.
mfg
JS
ich habe erst vor kurzem begonnen mich mit der OOP in PHP zu beschäftigen. Ich bin auf eure Antworten gespannt, da mir die Lösung irgenwie verwehrt bleibt.
PHP-Code:
class CMain() {
var Array1 = array();
var Array2 = array();
var ObjectBearbeiten = new CBearbeiten();
} // class CMain
PHP-Code:
class CBearbeiten() {
function macheWasFunc1() {
bearbeite Array1 aus Klasse CMain - aber wie
bearbeite Array2 aus Klasse CMain - aber wie
} // function macheWasFunc1()
function macheWasFunc2() {
bearbeite Array1 aus Klasse CMain - aber wie
bearbeite Array2 aus Klasse CMain - aber wie
} // function macheWasFunc2()
} // class CBearbeiten
Das ganze ist -für mich- so kompliziert, weil ich eigentlich die beiden Arrays validieren und später bearbeiten möchte. Ich will validieren und bearbeiten in zwei verschiedene Funktionen auslagern, da sich die Länge und Inhalte der Arrays je nach aufgerufener Seite ändern.
Leider sieht es dann aber so aus, dass ich an einer Stelle eine Switch-Anweisung habe, die Abfragt, welche keys zulässig sind. In einer anderern Funktion ist eine zweite Switch-Anweisung mit genau den gleichen Cases, die aber Code zum verändern der Arrays enthält.
Ärgerlich ist jetzt die Tatsache, dass ich den Code an zwei Stellen ändern muß, wenn sich die Keys verändern (z.B. weil ich einen Rechtschreibfehler hatte.). Meine Idee war jetzt es irgenwie hinzubekommen, dass ich die Klassen habe, in denen Methoden zum Bearbeiten von Array1 und Array2 existieren.
Grob skizziert aus:
PHP-Code:
switch ($key) {
case 'BLA_1':
validieren
break;
case 'BLA_2':
validieren
break;
case 'BLA_3':
validieren
break;
} // switch
:
:
:
switch ($key) {
case 'BLA_1':
bearbeiten
break;
case 'BLA_2':
bearbeiten
break;
case 'BLA_3':
bearbeiten
break;
} // switch
Ich hoffe, ich habe es vernünftig rüber gebracht. Für Lösungvorschläge bin ich vollkommen offen, da ich leider die Lösung nicht erkenne.
mfg
JS
Kommentar