Thread Klassen-Attribut auch in der Base-Klassen nutzen (5 answers)
Opened by Hagen at 2021-04-14 23:15

Hagen
 2021-04-14 23:15
#193211 #193211
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich würde gerne in einer Kind-Klassen ein Konfiguration definieren, auf die ich auch in der Eltern-Klassen zugreifen kann. Aber irgendwie finde ich keine schicke Lösung dafür bzw. der Zugriff funktioniert nicht.

Minimal-Code-Beispiel:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package DB::Service;

use base DB::Base;
use strict;
use warnings;

my %config = ( table => 'service' );

...

package DB::Base
use strict;
use warnings;


sub load {
  my ($self) = @_;

  $self->getDataFromTable($config{table});
}



Letzendlich geht es darum, dass die Eltern-Klasse sehr allgemein gehalten ist und über "die Konfiguration" in der Kind-Klasse unterschiedlich arbeitet. D.h. es gibt z.B. wie hier die DB::Service-Klasse, die ihre Daten aus der Service-Tabelle holen soll; es gibt aber auch eine DB::Kunden-Klasse, die ihre Daten aus der Kunden-Tabelle holen soll (in meine aktuellen Fall ist die 'Konfiguration' umfangreicher).

An anderen Stellen habe ich gesehen, dass man Methoden überschreibt. D.h. in der Eltern-Klasse gibt es die Methode 'getTable', die aber leer ist; in der Kindklasse wird diese dann überschrieben, so dass sie im aktuellen Beispiel 'service' zurückgeben würde.

Geht das auch kürzer und/oder 'eleganter'?

Bisherige Recherchen waren leider erfolglos.

Gruß

Hagen
Gruß
Hagen

View full thread Klassen-Attribut auch in der Base-Klassen nutzen