Hallo zusammen,
ich habe eine abstrakte PHP-Klasse namens Model, die CRUD-Methoden beinhaltet.
Vor allem die read-Methode hat mehrere Arguments:
protected static function read(
array|string $condition = [],
int $mode = PDO::FETCH_DEFAULT,
string $sort = '',
int|string $limit = null,
): array|bool|object
Wie ihr seht, sind diese optional.
Zur Festlegung des Tabellen-Namens sowie der zu lesenden Tabellen-Spalten habe ich die Klasse Model als abstrakte Klasse definiert. Andere Klassen, die jene Model-Klasse beerben, müssen daher zwangsläufig durch die Funktion getTableName und getAttributes (für die Tabellen-Spalten) die jeweiligen Namen generieren.
Jedenfalls geht es darum, dass, wenn bspw. die read-Method in einer anderen Klasse verwendet werden soll, ich die Arguments der Eltern-Klasse – in diesem Fall der Model-Klasse – erneut eingeben muss. Wenn diese Arguments nicht denen der Method in der Eltern-Klasse entsprechen, gibt es natürlich eine Fehlermeldung. 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. Ich hoffe, es ist klar, was ich meine.
Welche Möglichkeiten hätte ich denn, das zu vermeiden? In denjenigen Klassen, die die Model-Klasse beerben, möchte ich anstatt
public static function read(
array|string $condition = [],
int $mode = PDO::FETCH_DEFAULT,
string $sort = '',
int|string $limit = null,
): array
{
return parent::read( $condition );
}
bspw. einfach nur
public static function read(): array
{
return parent::read( $condition );
}
schreiben können.
Oder womöglich wäre sogar ein ganz anderer Ansatz viel besser.
Wenn es um die Abhängigkeiten von PHP-Klassen geht, kann man ja auf einen Dependency Injection Container zurückgreifen. Gibt es so etwas Ähnliches auch bei geerbten Methods abstrakter Klassen?
Grüße
Boris