On 4/24/06, Ed Pigg <[EMAIL PROTECTED]> wrote:
> So how I put things like session initialization, database connection,
> etc.. in the SUPER::cgiapp_init sub. So my SUB CLASS would be
> something like
>
> sub cgiapp_init {
>         my $self = shift;
>         $self->SUPER::cgiapp_init(@_);
>         $self->start_mode();
>         $self->run_modes( ... );
> }

Yes, that would work.  But if you are doing stuff like session init
and database connections, and you are sure you want to do this on all
requests, for every runmode, then I would suggest using Michael's
suggestion and set up a callback (which will always run regardless of
what you do in the subclass).  That is safer, since you don't have to
remember to add that SUPER call in the subclass everytime.

__PACKAGE__->add_callback(init => \&_my_init);

Just put that at the top of your base class somewhere (not inside a
subroutine), and make sure you are using at least CGI::Application
4.0, which is when the callback code was added.  That will execute the
_my_init method for every runmode request during the 'init' stage. 
The only problem you may run into, is that the init callbacks are
called immediately after the cgiapp_init method is called.  So your
subclass can not do anything in cgiapp_init that depends on something
that happens in your init callback, since it will not have been
executed yet.

Cheers,

Cees

---------------------------------------------------------------------
Web Archive:  http://www.mail-archive.com/cgiapp@lists.erlbaum.net/
              http://marc.theaimsgroup.com/?l=cgiapp&r=1&w=2
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to