Philipp Hasenfratz: SEHR Un-Uebersichtliches OOP Script :((

Beitrag lesen

Halihallo Aqua

Meine Frage:
Der Aufruf für dieses Modul also zur Darstellung
von diesem Zeugs für den Login,
das hat EXTREM viele variablen die übergeben werden.

Darstellung hat _absolut nichts_ mit Authentifizierung zu tun => wird in OOP getrennt.

Im endeffekt weiss ich nach 2 Stunden schon nichtmehr,
an welcher stelle welche variable gehoert

Dann splitte das Zeug auf verschiedene Methoden auf; Methodennamen bzw. Hashes eignen
sich wesentlich besser, da die Werte gleich mit dem Namen assoziiert werden können,
das menschliche Gehirn kann sich Zuordnungen wesentlich besser merken, als nummerische
Positionen => also: entweder Hashes als Konfiguration oder jeder Wert über Methode
festlegen.

Beispiel:
$oologin->login("login","user","pass","Du bist eingeloggt","Passwort falsch","Login Falsch","Dein Username","Dein persoenliches Passwort");
Das ist ja uuuur lange!

Kürzer wirds bestimmt nicht werden, jedoch einfacher zu merken.

-----

OOP: Für jede "Funktion" ein Modul => Design-Modul, Code/Verarbeitungs-Modul, das mal
grundsätzlich zu OOP. In deinem Beispiel: oologincontrol und oologindesign.

oologincontrol: Verarbeitung und Behandlung der Authentifizierung eines Kunden.
oologindesign:  Ausgabe und "Berechnung" des Designs.

oologincontrol

new()
   setLogin( $login_name )
   setPass( $password )
   setLoginPass( $usr, $login, $pass );   # gleich alles in einem
   true/false = authenticate( $login, $pass )
                                          # verglicht die Werte $login und $pass mit
                                          # denjenigen von setLogin/setPass
                                          # true : Kunde ist authentifiziert

oologindesign

new($oologin_control)                  # controler-Instanz mit Kundendaten übergeben.
   setData( %hash )                       # Formulardaten
   setMsgs( ERR_NOT_AUTH => $falsches_pwd,
            ERR_LOG_WRONG=> $login_wrong,
            ERR_PAS_WRONG=> $password_wrong,
            MSG_YOUR_PWD => $dein_passwort,
            MSG_YOUR_LOG => $dein_login)
   $html_code = parse()                   # was soll jetzt geschehen?

parse überprüft %hash auf $hash{$button}, falls gesetzt, wird der Kunde mit Daten aus
%hash gegen $oologin_control geprüft und ggf. Fehlermeldung ausgegeben. Falls nicht,
wird das Formular ausgegeben.

Möglichkeiten in oologindesign: "parse" (auf Cntl zugreifen)
sub parse {
   my ($self) = @_;
   $oo_cntl = $self->getOOLoginCntl;
   if ($oo_cntl->isAuthenticated) {
      print $self->{MSG_CORRECT_LOGIN};
   }
}

Programm

use CGI;

my $cgi       = CGI->new;
my $oo_cntl   = oologincontrol->new;
my $oo_design = oologindesign->new( $oo_cntl );

$oo_cntl->setUser( 'testuser' );
$oo_cntl->setPass( 'testpassphrase' );

$oo_design->setData( $cgi->Vars );
$oo_design->parse;

----

So, das wäre ein Beispiel. Ich hoffe, dass dir das etwas hilft.

Viele Grüsse

Philipp