Martin Moss wrote:
Ok, that makes sense, thank you:-)
But 'What' should I return, is $r->main the right thing to return?

I've found that it's pretty rare that you want to mess with main vs subrequest logic yourself. instead, I would just make the constructor return an object based on whatever mod_perl passes it which is, in turn, whatever request record Apache deems to be the proper one for the current (sub)request.


so new() should probably just be something like

sub new {

my ($class, $r) = @_;

$r = Apache::Request->new($r);

my $self = bless {_r => $r}, $class;

$self->init();

  return $self;
}

if it is important to insure that you only populate object attributes once, even in the case of internal redirects or lookups, you could hang attributes off of pnotes in the main request

sub init {

my $self = shift;

$t = ubstr(Digest::MD5...);

  if ($r->main) {
    $self->{XX_created_time_XX} = $t;
    $self->{_r}->pnotes(XX_created_time_XX => $t)
  }
  else {
    $t = $self->{_r}->main->pnotes('XX_created_time_XX');
  }
  ...
}

or somesuch. untested, but you get the idea :)

HTH

--Geoff



Reply via email to