Stringifizierbare Klassen laden, bevor YAML::Load() aufgerufen wird
Hintergrund. Normalerweise dumpt YAML Klassen sinnvoll, sprich mit Typus, Paketnamen und Innereien. Für eine Instanz von SL::Locale::String könnte das z.B. so aussehen:
Lädt mal das wieder, so entsteht daraus auch ein Objekt. Allerdings ist es zwingend erforderlich, dass Perl die Klassendefinition zum Zeitpunkt von YAML::Load() bereits gesehen hat. Ansonsten geht die Stringifizierung verloren, weil sie zum Zeitpunkt des "bless()"ens nicht bekannt war.
Das passierte mit normalen CGI, weil der Controller selber erst nach dem Auslesen der Session via "require..." geladen wird, der Controller lädt Rose-DB-Model, das lädt SL::Locale::String.
Stringifizierbare Klassen laden, bevor YAML::Load() aufgerufen wird
Hintergrund. Normalerweise dumpt YAML Klassen sinnvoll, sprich mit
Typus, Paketnamen und Innereien. Für eine Instanz von
SL::Locale::String könnte das z.B. so aussehen:
--- !!perl/hash:SL::Locale::String
untranslated: Invoice
Lädt mal das wieder, so entsteht daraus auch ein Objekt. Allerdings
ist es zwingend erforderlich, dass Perl die Klassendefinition zum
Zeitpunkt von YAML::Load() bereits gesehen hat. Ansonsten geht die
Stringifizierung verloren, weil sie zum Zeitpunkt des "bless()"ens
nicht bekannt war.
Das passierte mit normalen CGI, weil der Controller selber erst nach
dem Auslesen der Session via "require..." geladen wird, der Controller
lädt Rose-DB-Model, das lädt SL::Locale::String.