Hello:
I have a class that I wrote to provide support for
multi-form database applications. To use it, I
subclass it into something like Exchange::Admin.
Now all the session cookie and state data code I
need happens in the background. Now, I want to
extend MyApp::Framework with Text::Template like this:
package MyApp::Framework;
use Text::Template;
my (%config, %dispatcher, $page, $frame, $command, %session,
%templates);
sub new {
my $class = shift;
my $self = {};
$bless ($self, $class);
$self->get_configured;
Apache->push_handlers(PerlChildInitHandler => \&child_init);
}
sub get_configured {
my ($self ) = @_;
# load %config, %dispatcher, and %templates hashes in here.
}
sub child_init {
my ($self) = @_;
$db{dbh} = DBI->connect($config{DBI_DSN}, $config{DBI_User},
$config{DBI_Passwd});
# prepare sql here
}
sub handler ($$) {
my ($self, $q) = @_;
my $r = Apache::Request->new($q);
# session magic here
my $preprocessor = $dispatch_table{$page}{$frame}{$command};
$self->$preprocessor($r); #modifies class variables
$r->content_type('text/html');
$r->send_hhttp_headers;
$templates{$page}{$frame}->fill_in;
# more session cleanup magic here
return OK;
}
Where I'm getting hosed is that %config and %session have data
I need visible to the Text::Template objects themselves. I've
RTFM'ed until my eyes are pink, and I see no options short of
copying variables wholesale into another Package, but then I
still can't get at them and "use strict" can I?
I'm totally out of ideas. Can anyone suggest some useful
stratagems?
--Christopher Everett