Rolf B: Wiederholung der Arguments von PHP-Methods bei Beerbung abstrakter Klassen vermeiden

Beitrag lesen

Ergänzung:

Das heißt, wenn mehrere Klassen die Model-Klasse beerben bzw. deren Methods verwenden, muss ich bei jeder Änderung der Arguments der Eltern-Methods die Arguments bei allen anderen Klassen auch verändern.

Und das ist GUT so. Denn andernfalls würdest Du eventuell gar nicht merken, dass da Erben sind, die ihr Erbe unordentlich behandeln.

Andererseits ist es nicht gut, eine Basisklasse ständig zu ändern. Eigentlich sollte man sich einmal Gedanken gemacht haben, und dann das Framework stabil halten. Damit man eben nicht ständig ändern muss.

Die Frage ist auch, ob es wirklich nötig ist, read() zu überschreiben. Diese Methode sieht sehr generisch aus, und die für's konkrete Model relevanten Dinge hast Du doch in abstrakten Methoden untergebracht, die zu überschreiben sind. Wenn Du der read-Methode keine Funktionalität hinzufügen musst, kannst Du sie ggf. doch auch unverändert erben.

Und wenn es bei einigen Models darum geht, die Condition oder die Sortierung oder den PDO Mode vorzudefinieren, dann könnte man auch Methoden wie "getDefaultCondition" oder "getPDOMode" schreiben, die eine Modelklasse überschreiben kann, aber nicht muss.

Falls Du read so aufrufen willst, dass nur der erste und dritte Parameter übergeben werden und der zweite und vierte Parameter ihren Defaultwert behalten, kannst Du das so tun:

$model->read(
   condition: [ "foo" => "bar", "hui" => 17 ],
   sort:      "descending"
);

Oder wie auch immer deine Bedingungen aussehen. Der Trick ist jedenfalls, den Parameternamen mit einem Doppelpunkt vor den Wert zu schreiben. Natürlich musst Du das nicht auf 4 Zeilen verteilen. Das habe ich wegen der Lesbarkeit im Forum gemacht.

Rolf

--
sumpsi - posui - obstruxi