Thread OOP, Parameter fuer Konstruktor pruefen (9 answers)
Opened by styx-cc at 2007-12-14 15:55

Strat
 2007-12-16 13:41
#103927 #103927
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Struppi+2007-12-15 13:03:54--
daher würde ich die Prüfung eben in den Aufruf von connect verpacken, sinnvollerweise z.b. über -param => 'value', dann läßt sich die Funktion leicht anpassen.


Ich bin eher dafuer, die Parameter im init ueberpruefen zu lassen. Man kann ja ein paar check-Methoden implementieren, die je nach verwendung die Parameter testen, und die aus dem init heraus aufgerufen werden. Den entsprechenden check sollte man zusaetzlich auch noch mal im connect ausfuehren. Und wenn man die DB aendert, braucht man nur die entsprechende check-Methode anpassen oder vielleicht erweitern, z.B.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
sub check_mysql_params {
    my( $self ) = @_;

    foreach my $attr ( qw( db username pass ) ) {
        unless( defined $self->$attr ) {
            croak( "Error: attribute '$attr' not set" );
        }
    }
    # eventuell hier noch den connect testen

    return $self;
} # check_mysql_params

sub init {
    my( $self, %params ) = @_;

    # parameter hier setzen
    
    my $driver = $self->driver || 'mysql';
    
    my $checkDriverParamsMethod = "check_${driver}_params";
    if( $self->can( $checkDriverParamsMethod ) {
        $self->$checkDriverParamsMethod;
    }
    else {
        croak "Error: no method '$checkDriverParamsMethod' existing";
    }

} # init

oder so aehnlich.

Wenn ein Script sehr lange laeuft (z.B. mehrere Stunden), dann ist es oft hilfreich, wenn alles so frueh wie moeglich ueberprueft werden kann.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread OOP, Parameter fuer Konstruktor pruefen