GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Plack::Component(3) User Contributed Perl Documentation Plack::Component(3)

Plack::Component - Base class for PSGI endpoints

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

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.

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.

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.

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.

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.

Plack Plack::Builder Plack::Middleware
2020-11-30 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.