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

Reply via email to