HTML::Mason::Plugin - phpMan

Command: man perldoc info search(apropos)  


Sections
NAME SYNOPIS DESCRIPTION PLUGIN HOOKS WARNINGS
NAME
    HTML::Mason::Plugin - Plugin Base class for Mason

SYNOPIS
       package MasonX::Plugin::Timer;
       use base qw(HTML::Mason::Plugin);
       use Time::HiRes;

       sub start_component_hook {
           my ($self, $context) = @_;
           push @{$self->{ timers }}, Time::HiRes::time;
       }

       sub end_component_hook {
           my ($self, $context) = @_;
           my $elapsed = Time::HiRes::time - pop @{$self->{ timers }};
           printf STDERR "Component '%s' took %.1f seconds\n",
               $context->comp->title, $elapsed;
       }

       1;

DESCRIPTION
    Use a Mason plugin to have actions occur at the beginning or end of
    requests or components. Plugins are activated by passing plugins in the
    interpreter or request object. Each plugin in the list can be specified
    as a class name (in which case the plugin object is created once for
    each request) or as an actual object of the plugin class.

    If your plugin can be configured, place the configuration in class
    variables - for example,

        $MasonX::Plugin::Timer::Units = 'seconds';

    These can be set either from httpd.conf via PerlSetVar directives, or in
    perl directly from a handler.pl file.

PLUGIN HOOKS
    A plugin class defines one or more of the following hooks (methods):
    *start_request_hook*, *end_request_hook*, *start_component_hook*, and
    *end_component_hook*.

    Every hook receives two arguments: the plugin object itself, and a
    context object with various methods.

    start_request_hook
        "start_request_hook" is called before the Mason request begins
        execution. Its context has the following read-only methods:

            request # the current request ($m)
            args    # arguments the request was called with

        When called in scalar context, *args* returns a list reference which
        may be modified to change or add to the arguments passed to the
        first component. When called in list context, *args* returns a list
        (which may be assigned to a hash).

        Note that subrequests (see HTML::Mason::Request will create a new
        plugin object and execute this code again; you can skip your code
        for subrequests by checking "is_subrequest" on *request*. e.g.

           sub start_request_hook {
               my ($self, $context) = @_;
               unless ($context->request->is_subrequest()) {
                   # perform hook action
               }
           }

        Currently, this hook is called before any information about the
        requested component is available, so you cannot call methods like
        "base_comp()" or "request_args()" on the Request object.

    end_request_hook
        "end_request_hook" is called before the Mason request exits. Its
        context has the following read-only methods:

            request     # the current request ($m)
            args        # arguments the request was called with
            output      # reference to the contents of the output buffer
            wantarray   # value of wantarray the request was called with
            result      # arrayref of value(s) that the request is about to return
            error       # reference to error, if any, that the request is about to throw

        When called in scalar context, *args* returns a list reference; when
        called in list context, it returns a list (which may be assigned to
        a hash).

        *result* always contains an array ref; if *wantarray* is 0, the
        return value is the the first element of that array. The plugin may
        modify *output* to affect what the request outputs, and *result* and
        *error* to affect what the request returns.

    start_component_hook
        "start_component_hook" is called before a component begins
        executing. Its context has the following read-only methods:

            request     # the current request ($m)
            comp        # the component object
            args        # arrayref of arguments the component was called with

        The plugin may NOT modify *args* currently.

    end_component_hook
        "end_component_hook()" is called after a component has completed.
        Its context has the following read-only methods:

            request     # the current request ($m)
            comp        # the component object
            args        # arrayref of arguments the component was called with
            wantarray   # value of wantarray the component was called with
            result      # arrayref of value(s) that the component is about to return
            error       # reference to error, if any, that the component is about to throw

        *result* always contains an array ref; if *wantarray* is 0, the
        return value is the first element of that array. The plugin may
        modify both *result* and *error* to affect how the request returns.

        It would be desirable for this hook to have access to the
        component's output as well as its return value, but this is
        currently impossible because output from multiple components combine
        into a single buffer.

WARNINGS
    Do not keep an unweakened reference to a request or component object in
    your plugin object, or you will create a nasty circular reference.


Generated by phpMan Author: Che Dong On Apache Under GNU General Public License - MarkDown Format
2026-05-23 05:57 @216.73.217.24 CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0 TransitionalValid CSS!

^_back to top