Eingebettete Initialisierungen

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

TBD/DBI/MySQL.pm
sub initialize2 {
   my ($self) = @_;

   my $st = $self->{db}->prepare(qq{
      show index from $self->{table}
   });
   $st->execute();
   my @keyfields = ();
   my $record;
   while (defined($record = $st->fetchrow_hashref())) {
      next unless $record->{Key_name} eq "PRIMARY";
      $keyfields[$record->{Seq_in_index}] =
         $record->{Column_name};
   }
   $st->finish();

   shift @keyfields; # Seq_in_index is running from 1
   croak "no primary key defined" unless @keyfields > 0;
   $self->{keyfields} = \@keyfields;

   $self->SUPER::initialize2();
}

*Durch die beiden Initialisierungs-Sequenzen über initialize1 und initialize2 wird die am meisten abgeleitete (und spezialisierte) Implementierung der Abstraktion genau in der Mitte des gesamten Initialisierungsvorgangs aktiv.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1996 - 2003 Andreas Borchert, in HTML konvertiert am 01.10.2003