Announcement

Collapse
No announcement yet.

Namensräume in Klassen & Modulen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Namensräume in Klassen & Modulen

    Hallo,

    ich möchte innerhalb eines Perl-Modus eine Datenbankverbindung per DBI herstellen und dann das Database-handle in verschiedenen Funktionen nutzen. Dazu muss ich mein handle "$dbh" irgendwie in der Klasse / Modul global bekannt machen. Wie geht das, oder wie macht man so etwas üblicher Weise?

    Mein folgende Versuch funktioniert nicht:
    package xxx;
    ...
    sub new {
    ...
    our $dbh = connectDB();
    }

    sub connectDB {
    my $ddh = DBI_>connect(.....);
    return $dbh;
    }

    sub igrndwas_mit_sql {} # geht in die Hose

  • #2
    Da Du anscheinend Objektorientiert programmierst, solltest Du es als Attribut nehmen:

    Code:
    package xxx;
    
    sub new {
       ...
       my $self = bless {}, shift;
    
       $self->connect_db();
    
       return $self;
    }
    
    sub connect_db  {
        my ($self) = @_;
    
        my $dbh = DBI->connect(...);
        $self->dbh( $dbh );
    }
    
    sub dbh {
        my ($self,$dbh) = @_;
    
        $self->{__dbh__} = $dbh if @_ == 2;
       return $self->{__dbh__};
    }
    
    sub irgendwas_mit_db_abfrage {
        my ($self) = @_;
    
        my $sth = $self->dbh->prepare( ... );
    }
    Perl-Magazin
    Perl-Nachrichten

    Comment

    Working...
    X