NAME
Class::Component::Recipe - Dynamic Component Containers
SYNOPSIS
use Class::Component::Recipe;
# Create a new C:C:R object. Most work is done in the collection
my $ccr = Class::Component::Recipe->new(base_class => 'Foo::Base');
my $col = $ccr->get_collection;
# Prepare the class list as you need it. See the Collection pod.
$col->push('Foo::ComponentA');
$col->push('Foo::ComponentB');
$col->insert('Foo::Middle', 1);
# Install. @MyApp::Foo::ISA is now: Foo::ComponentB, Foo::Middle,
# Foo::ComponentA, Foo::Base. Previously existing entries will be
# before Foo::Base.
$ccr->install('MyApp::Foo');
DESCRIPTION
This module provides functionality to build a collection of classes and install it together with a base in a container class. This allows the dynamic creation of component based classes.
ATTRIBUTES
(get_|set_|has_)base_class
The base class of the component container to build.
(get_|set_|has_)collection
The collection object handling component order and installing the final container.
(get_|set_)collection_class
The class name of the collection object this recipe will produce.
METHODS
BUILD($param)
Moose method. Initializes collection
if not passed to constructor.
install($target_class)
Installs the collection and the base class into the $target_class
.
SEE ALSO
Class::Component::Recipe::Collection for the collection interface. NEXT, C3 for component designing systems with multiple inheritance.
REQUIRES
aliased, Class::Inspector, Carp::Clan, Moose, Moose::Policy, Test::More (for build).
AUTHOR
Robert 'phaylon' Sedlacek <phaylon@dunkelheit.at>
LICENSE AND COPYRIGHT
This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself.