Thread Variablen global bei require
(49 answers)
Opened by freddy at 2009-08-24 13:38
Sobald ein Projekt so groß ist, dass man sich Gedanken über eine Zentrale Konfiguration macht, dann sollte man sich auch Gedanken über eine Objektorientierung machen.
Ich packe dann meist in die Objektinitialisierung auch gleich eine Referenz auf ein Config-Objekt. Beispiel: Code (perl): (dl
)
1 2 3 4 5 6 7 8 # ... my $conf=myConf->new($file) or die "ERROR LOAD CONF ($!)\n"; # ... my $obj=myObj->new($conf,@sonstiges); # ... my $result = $obj->tue_was(); Der Klassencode könnte so aussehen: 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 package myObj; sub new { my $class=shift; my $conf=shift; my @rest=@_; return undef unless($conf); # weitere Tests der Parameter ... my $self={CONF=>$conf, rest=>\@rest}; return bless($self,$class); } sub conf { return $_[0]->{CONF}; } sub tue_was { my $self=shift; if( $self->conf->has('irgendwas') ) { return 'Ich tue was'; } else { return 'Ich tue nichts'; } } Über "$self" Kann innerhalb der Klasse transparent auf die Konfiguration zugegriffen werden. Und mit "Moose" geht es noch Eleganter, da es einem (unter anderem) eine Menge Arbeit mit den ObjektVariablen abnimmt. |