Thread Variablen global bei require (49 answers)
Opened by freddy at 2009-08-24 13:38

topeg
 2009-08-24 18:40
#124674 #124674
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
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.

View full thread Variablen global bei require