If you are trying to access this from modules, I wouldn't use a Mason  
or mod_perl feature. Instead, create a singleton at the beginning of  
each request, and give it accessors for each "global" value you want  
to store.

e.g.
    MyApp->globals->msg('foo');

where MyApp->globals is a request-specific singleton with a number of  
accessors.

On Dec 5, 2007, at 4:00 PM, Anthony Ettinger wrote:

> On Dec 5, 2007 3:41 PM, Perrin Harkins <[EMAIL PROTECTED]> wrote:
>> On Dec 5, 2007 6:33 PM, Anthony Ettinger <[EMAIL PROTECTED]> wrote:
>>> In effect, I just want this thing to die off at the end of each http
>>> request, and not shared between other users of the application.
>>
>> Use mod_perl's $r->pnotes().  It will be cleaned out for you at the
>> end of each request, even if your code dies.
>>
>> - Perrin
>>
>
> Here's an example of what I need:
>
> ./pages/autohandler
>
> <%init>
> $m->notes('msg') = new UI::Msg;
> my $msg = $m->notes('msg');
> </%init>
>
> Now any where in the request, as far as mason components go, I can use
> $msg->err("This is an error");
> BUT...suppose there is a mason component that uses a DB object:
>
> ./parts/form
>
> <%once>
> use DB::Contacts;
> </%once>
>
> <%init>
> my $customer = DB::Contacts->search_where({ 'email' => $ARGS{'email'}
> }); #could be "bad email address"
> ...
> </%init>
>
> Now I would like the module DB::Contacts to have access to the $msg
> object created in the autohandler.
> So within it, if it receives an invalid "email", it could return
> undef, and add an error:
>
> package DB::Contacts;
> ....
> sub search_where {
>    my $self = shift;
>    my $param = $_[0]->{'email'};
>
>    $msg->err("Invalid email.") unless $param m/\@/; #no "@" is invalid
> (stupid I know)
> }
> ...
> 1;
>
> Is this possible to have perl libraries access the $msg object defined
> inside a mason autohandler? And not be shared or live beyond the
> current request?
>
> -- 
> Anthony Ettinger
> 408-656-2473
> http://anthony.ettinger.name
>
> var (bonita, farley) = new Dog;
> farley.barks("very loud");
> bonita.barks("at strangers");
>


-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell.  From the desktop to the data center, Linux is going
mainstream.  Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
Mason-users mailing list
Mason-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mason-users

Reply via email to