Hallo Zusammen,
nach einem regen Austausch mit HAJ ( danke nochmal ), der mir riet,
meine alte Idee zu verwerfen und mit
Moose zu arbeiten,
habe ich mir das Modul nun genauer angesehen. Natürlich habe ich noch
einiges zu lernen aber ich habe bereits eine Verständnisfrage, bei der
ihr mir vielleicht weiterhelfen könnt. :)
Ich habe zur Zeit 3 Files :
1. Installer.pl -> Grunddatei zum Starten der Anwendung
use Moose;
use Kernel::Config;
# ------------------------------------------------------------------------
my %Config = Kernel::Config -> Config_Loader( );
print "Value des Config - Objekts : $Config{ 'DB_Handle' }";
# -------------------------------------------------------------------------
1;
Hier lädt er das Config - Modul & stellt die Ergebnisse als Hash zur Verfügung,
auf die ich mit
$Config{ 'Werte des Hashs aus der Config' }
zugreifen kann.
___________________________________________________________________________________________
2. Die Config.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package Kernel::Config;
use Moose;
extends 'Kernel::Config::Defaults';
# ------------------------------------------------------------------------
sub Config_Loader {
my %Config_Werte = ( Home => 'C:\Scripts\Aktuell' );
my $Defaults_Handler = Kernel::Config::Defaults -> new( ) ;
my $Defaults_Referenz = $Defaults_Handler -> Load_Defaults( ) ;
my %Defaults_Werte = %$Defaults_Referenz;
# print "@{[ %Defaults_Werte ]}";
return( %Defaults_Werte );
}
# --------------------------------------------------------------------------------
no Moose;
# ---------------------------------------------------------------------------------
__PACKAGE__ -> meta -> make_immutable;
Die Variable "Home" im Hash "%Config_Werte" ist äußerst wichtig, da sie
den Basispfad für die ganze Anwendung angibt, sie muss anpassbar sein
und wird überall verwendet, bzw. soll verwendet werden.
Dies ist auch der einzige Wert, der wirklich in der Config.pm steht, alle
anderen Config - Einträge stehen in der Datei "Defaults.pm", die ich mit
my $Defaults_Handler = Kernel::Config::Defaults -> new( ) ;
initialisiere.
Dann lade ich alle Config - Einträge mit :
$Defaults_Referenz = $Defaults_Handler -> Load_Defaults( );
Ich dereferenziere noch den Hash und gebe die Ergebnise als Hash zurück :
my %Defaults_Werte = %$Defaults_Referenz;
return( %Defaults_Werte );
___________________________________________________________________________________________
3. Die Defaults.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package Kernel::Config::Defaults;
use Moose;
# --------------------------------------------------------------------------------------------------------------------------------------------------------
sub Load_Defaults {
my %DB_Connection = ( DB_Handle => 'Microsoft SQL Server' );
if ( -e "C:/Scripts/Aktuell/Kernel/Config/Files" )
{
print "Positive Erkennung des Config - Files Ordners ..." , "\n";
}
return { %{ \%DB_Connection } }
};
# --------------------------------------------------------------------------------------------------------------------------------------------------------
no Moose;
# --------------------------------------------------------------------------------------------------------------------------------------------------------
__PACKAGE__ -> meta -> make_immutable;
1;
Hier komme alle Config - Einträge rein, ungefähr 200 oder mehr, die ich wie
beschrieben aufrufen kann.
___________________________________________________________________________________________
DAS PROBLEM
Ich hatte vorher eine Config - Datei, in der die Config - Einträge in folgendem Format standen :
$Self -> { Database } = 'Bezeichnung der DB';
$Self -> { DatabaseUser } = 'Standard User';
$Self -> { DatabasePw } = 'XXXXXXXX';
anstatt akuell als Hash :
my %DB_Connection = ( DB_Handle => 'Microsoft SQL Server' );
Und bei Prüfung des Verzeichnis für das Verzeichnis "C:/Scripts/Aktuell/Kernel/Config/Files" wurde anstatt
-e "C:/Scripts/Aktuell/Kernel/Config/Files/"
folgender Code verwendet :
-e "$Self->{Home}/Kernel/Config/Files/"
Dies war so weil in der alten Config.pm die Variable "$Self->{Home}" auch so definiert war, anstatt aktuell als Hash.
DIE FRAGE
Ich möchte nun, dass :
1. ihr mir grundsätzlich sagt, ob es sinnvoll ist, es wieder auf diese Art zu handlen, oder ob ich es bei
Hashes belassen soll wie es ist. Wenn ich wieder das Format "$Self->{Home}" verwendet soll, kriege ich
das nicht bewerkstelligt mit Self und dem Hash. :/
2. das Script wenn die Prüfung erfolgreich ist, also das o. g. Verzeichnis existiert, alle .PM Dateien in
dem Ordner wiederum reinlädt und die Variablen übergibt ( entweder auch Hashes oder "$Self -> < Parameter >"
Ich verwende das so, weil ich es nicht so schreiben konnte ( aufgrund Unwissen wahrscheinlich ), dass Moose
in einem "has" Befehl z. B. 20 Variablen enthält. Ich würde es auch ungern als Sub - Routine oder ähnliches
machen. Oder könnt ihr mir sagen, wie ich das bewerkstellige, eine Config - Datei mit sehr vielen Parametern
als Moose has Objekt ???
Ich hoffe ihr könnt mir helfen und erwarte sehnsüchtig Eure Antwort. :) XD
Viele Grüße
YAPD
Last edited: 2019-06-06 20:18:02 +0200 (CEST)
Yet Another Perl Developer