pl: 1: Instanzvariablen oder Funktionsparameter? 2: Überladene Funktionen?

Beitrag lesen

Frage 2: kann man funktionen aufblähen mit viele Funktionsparametern und Instanzvariablen oder sollte man das der übersichtlichkeithalber in vielen kleine Funktionen abarbeiten

Du kannst Funktionen sogar so überlagern, dass sie mit oder ohne Instanz aufgerufen werden können, wie untenstehendes Perl-Beispiel zeigt:

sub sid{
    my $self = shift || main->new(cookieabfrage => 1);
    my %cookies = CGI::Cookie->fetch;
    my $id = defined $cookies{$cookiename} ? $cookies{$cookiename}->value : do{
        $self->{NOCOOKIE} = 'Browser sendet keinen Cookie, bitte Seite neu laden...';
        '';
    };

    if($id){
        $self->{SID} = $id;
        return $id;
    }
    else{
        return if $self->{cookieabfrage};
        $self->{SID} = Methods->makesid;
        $self->header("Set-Cookie" => "$cookiename=$self->{SID}");
        return $self->{SID};
    }
}

In jedem Fall wird eine so erzeugte Session-ID zur Instanz-Variablen, was jedoch nur einen Effekt hat, wenn beim Aufruf der Funktion tatsächlich eine Instanz übergeben wurde. Ansonsten wird eine Attrappe (Mock) benutzt.