NAME

Footprintless::MixableBase - A base class for using mixins

VERSION

version 1.19

SYNOPSIS

package Foo;

use parent qw(Footprintless::MixableBase)

use Footprintless::Mixins qw(
    _sub_entity
    ...
);

sub _init {
    my ($self, %options);
    $self->{debug} = $options{debug};
    $self->{user} = $self->_entity('user', 1);
    return $self;
}

sub get_user {
    my ($self) = @_;
    print("getting user\n") if ($self->{debug});
    return $self->{user};
}

package main;

use Footprintless::Util qw(factory);

my $foo = Foo->new(
    factory({
        root => {
            foo => {
                user => 'bar'
            }
        }
    }),
    'root.foo',
    debug => 1);

my $user = $foo->get_user(); # returns 'bar'

DESCRIPTION

Provides the boilerplate constructor for packages that want to use Footprintless::Mixins. Specifically, strips off the first two parameters ($factory and $coordinate) and sets them as member variables ($self-{factory}> and $self-{coordinate}>). Then it passes on the remainder of the arguments to the _init method. Subclasses should override _init for additional initialization.

AUTHOR

Lucas Theisen <lucastheisen@pastdev.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2016 by Lucas Theisen.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

SEE ALSO

Please see those modules/websites for more information related to this module.