Al Newkirk > Bubblegum-0.19 > Bubblegum::Role

Download:
Bubblegum-0.19.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Module Version: 0.19   Source   Latest Release: Bubblegum-0.27

NAME ^

Bubblegum::Role - Class Component System for Bubblegum via Moo::Role

VERSION ^

version 0.19

SYNOPSIS ^

    package CheckingService;

    use Bubblegum::Role;

    sub deposit {
        my $self = shift;
        my $amount = $self->balance + shift // 0;
        return $self->balance($amount);
    }

    sub withdrawal {
        my $self = shift;
        my $amount = $self->balance - shift // 0;
        return $self->balance($amount);
    }

    package BankAccount;

    use Bubblegum::Class;

    with 'CheckingService';

    has balance => (
        is      => 'rw',
        default => 0
    );

And elsewhere:

    my $account = BankAccount->new(balance => 100000);
    say $account->withdrawal(1500);

DESCRIPTION ^

Bubblegum::Role provides an object orientated system for defining class components (often referred to as traits or roles) by way of Moo::Role; and activates all of the options enabled by the Bubblegum module. Using this module allows you to define Moo roles as if you were using Moo::Role directly.

    use Bubblegum::Role;

is equivalent to

    use 5.10.0;
    use strict;
    use autobox;
    use autodie ':all';
    use feature ':5.10';
    use warnings FATAL => 'all';
    use English -no_match_vars;
    use utf8::all;
    use mro 'c3';
    use Moo::Role;

AUTHOR ^

Al Newkirk <anewkirk@ana.io>

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2013 by Al Newkirk.

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

syntax highlighting: