NAME

Plack::Component - Base class for PSGI endpoints

SYNOPOSIS

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 recieves 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 hash-ref and uses that to create the instance with. 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.

BACKWARDS COMPATABILITY

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 compatability 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