Plack::Component(3pm)

Plack::Component3pm

Base class for psgi endpoints

Usage

  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;
  }

Overview

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.

Releases

8 releases since Debian 6.0 (Squeeze); the text changed 7 times.

  1. 6.0
  2. 7
  3. 8
  4. 9
  5. 10
  6. 11
  7. 12
  8. 13

From libplack-perl 1.0051-1 in Debian 13 (Trixie). Parsed by carta from the page's man source.