Provided by: libplack-perl_1.0051-1_all bug

NAME

       Plack::Component - Base class for PSGI endpoints

SYNOPSIS

         package Plack::App::Foo;
         use parent qw( Plack::Component );

         sub call {
             my($self, $env) = @_;
             # Do something with $env

             my $res = ...; # create a response ...

             # return the response
             return $res;
         }

DESCRIPTION

       Plack::Component is the base class shared between Plack::Middleware and "Plack::App::*" modules. If you
       are writing middleware, you should inherit from Plack::Middleware, but if you are writing a Plack::App::*
       you should inherit from this directly.

REQUIRED METHOD

       call ($env)
           You  are  expected  to  implement  a "call" method in your component. This is where all the work gets
           done. It receives the PSGI $env hash-ref as an argument and is  expected  to  return  a  proper  PSGI
           response value.

METHODS

       new (%opts | \%opts)
           The constructor accepts either a hash or a hashref and uses that to create the instance. It will call
           no other methods and simply return the instance that is created.

       prepare_app
           This  method is called by "to_app" and is meant as a hook to be used to prepare your component before
           it is packaged as a PSGI $app.

       to_app
           This is the method used in several parts of the Plack infrastructure to convert your component into a
           PSGI $app. You should not ever need to override this method; it is recommended to  use  "prepare_app"
           and "call" instead.

       response_cb
           This  is a wrapper for "response_cb" in Plack::Util. See "RESPONSE CALLBACK" in Plack::Middleware for
           details.

OBJECT LIFECYCLE

       Objects for the  derived  classes  (Plack::App::*  or  Plack::Middleware::*)  are  created  at  the  PSGI
       application compile phase using "new", "prepare_app" and "to_app", and the created object persists during
       the  web  server  lifecycle,  unless  it is running on the non-persistent environment like CGI. "call" is
       invoked against the same object whenever a new request comes in.

       You can check if it is running in a persistent environment by checking "psgi.run_once" key  in  the  $env
       being true (non-persistent) or false (persistent), but it is best for you to write your middleware safely
       for  a  persistent environment. To accomplish that, you should avoid saving per-request data like $env in
       your object.

BACKWARDS COMPATIBILITY

       The Plack::Middleware module used to inherit from Class::Accessor::Fast, which has been removed in  favor
       of   the  Plack::Util::Accessor  module.  When  developing  new  components  it  is  recommended  to  use
       Plack::Util::Accessor like so:

         use Plack::Util::Accessor qw( foo bar baz );

       However, in order to keep backwards compatibility this module provides a "mk_accessors" method similar to
       Class::Accessor::Fast. New code should not use this and use Plack::Util::Accessor instead.

SEE ALSO

       Plack Plack::Builder Plack::Middleware

perl v5.38.2                                       2024-01-20                              Plack::Component(3pm)