NAME

Pickles::Container - A Simple Container

SYNOPSIS

package MyApp::Container;
use base qw(Pickles::Container);

# somewhere else in your code
my $c = MyApp::Container->new();

# a persistent object (lasts during this process)
my $object = Foo->new();
$c->register( foo => $object );

# a per-instance object (lasts only during an instance of 
# this container is alive)
$c->register( bar => sub { Bar->new } );

# a persistent object, lazily instantiated
$c->register( baz => sub { Baz->new }, { persistent => 1 } );

{
    my $guard = $c->new_scope;
    my $foo = $c->get('foo');
    my $bar = $c->get('bar'); 
    my $baz = $c->get('baz');
    # $guard goes out of scope
}

{
    my $guard = $c->new_scope;
    my $foo = $c->get('foo'); # Same as previous $foo
    my $bar = $c->get('bar'); # DIFFERENT from previous $bar
    my $baz = $c->get('baz'); # Same as previous $baz
}

DESCRIPTION

Pickles::Container is a simple container object like Object::Container.

The main difference is that it has per-process lifecycle and per-instance lifecycle objects.