Thread Klasse mit Parameter in der Subroutine (2 answers)
Opened by tino91DE at 2014-07-03 14:42

tino91DE
 2014-07-03 14:42
#176279 #176279
User since
2014-06-08
8 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich schlage mich gerade mit einer Klasse rum. "new" erzeugt einen Datenbanklink für die gesammte Klasse.


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
sub new {
  @_ == 2 || die 'Usage: class->new($db)';
  my ($class_session, $db) = @_;  
  my $self = bless {
    db => $db,
    sessionLang => 'en',
    sessionID => '',
    sessionLiveTime => 900,
  }, $class_session;
  
  return $self;
}


In allen Subroutinen der Klasse greife ich dann auf den Datenbanklink zu:

Code (perl): (dl )
1
2
3
4
5
6
sub getUsername {
  my $self = shift;

  $sth = $self->{db}->prepare($sql) || die "cannot prepare query, errmsg = $DBI::errstr";

}


Ziel ist es eine Subroutine der Klasse mit weiteren Parametern aufzurufen. Das ganze soll dann wie folgt aussehen:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use session;

my $dbh = DBI->connect($dsn, $user, $password) || die "can't connect, errmsg = $DBI::errstr";

my $session = session->new($dbh);

if($session->session()){
# Session aktiv
# Hier werden nun weitere Routinen der Klasse aufgerufen 

print $session->getUsername;

# Das Problem
print $session->getField("parameterA","parameterB");


}else{
# Session nicht aktiv
}



Leider kann ich die Subroutine getField aus der Klasse nur entweder mit dem Datenbanklink ODER mit den Parametern aufrufen.

Lasse ich $self weg, kommen die Parameter an, der DBI Link geht aber nicht mehr. Nutze ich $self, funktionieren die Parameter nicht mehr aber die Datenbank ist ansprechbar.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
sub getField{

    my $self = shift;

    my $usernamestring = $_[1];
    my $type = $_[0];

  $sth = $self->{db}->prepare($sql) || die "cannot prepare query, errmsg = $DBI::errstr";

}


Aus folgenden Tut habe ich versucht $self mit CORE::shift anzusprechen, leider hatte ich auch damit kein Erfolg.

Kann mir jemand weiterhelfen?

View full thread Klasse mit Parameter in der Subroutine