NAME
Mojo::Base - Once Upon A Midnight Dreary!
SYNOPSIS
package Car;
use base 'Mojo::Base';
__PACKAGE__->attr('driver');
__PACKAGE__->attr('doors', default => 2);
__PACKAGE__->attr([qw/passengers seats/],
chained => 1,
default => sub { 2 }
);
__PACKAGE__->attr('trailer', weak => 1);
package main;
use Car;
my $bmw = Car->new;
print $bmw->doors;
print $bmw->passengers(5)->doors;
my $mercedes = Car->new(driver => 'Sebastian');
print $mercedes->passengers(7)->passengers;
$mercedes->trailer(Trailer->new);
DESCRIPTION
Mojo::Base is a base class containing simple and fast helpers for object oriented Perl programming. Main design goals are minimalism and staying out of your way. The syntax is a bit like Ruby and the performance better than Class::Accessor::Fast.
Note that this is just an accessor generator, take Moose if you are looking for an object system.
For debugging you can set the MOJO_BASE_DEBUG
environment variable.
METHODS
new
my $instance = BaseSubClass->new;
my $instance = BaseSubClass->new(name => 'value');
my $instance = BaseSubClass->new({name => 'value'});
attr
__PACKAGE__->attr('name');
__PACKAGE__->attr([qw/name1 name2 name3/]);
__PACKAGE__->attr('name', chained => 1, default => 'foo');
__PACKAGE__->attr(name => (chained => 1, default => 'foo'));
__PACKAGE__->attr('name', {chained => 1, default => 'foo'});
__PACKAGE__->attr([qw/name1 name2 name3/] => {
chained => 1,
default => 'foo'}
);
Currently there are three options supported.
chained: Whenever you call an attribute with arguments the instance
is returned instead of the value.
default: Default value for the attribute, can also be a coderef.
Note that the default value is "lazy", which means it only
gets assigned to the instance when the attribute has been
called.
weak: Weakens the attribute value.