Name
Mo - Micro Objects. Mo is less.
Synopsis
Description
use Mo. Mo is less. Much less.
Moose is huge. Moose led to Mouse led to Moo led to Mo. M is nothing. Mo is more. Not much.
When Moo is more than you need, drop an 'o' and get some Mo.
To get just a little Mo from Mo, use "Mo Features" below.
Core Features
This is what you get. Nothing Mo.
new
method-
Mo provides a
new
object constructor. You pass it a list of name/value pairs and it returns a new object.Constructor will not call BUILD methods. This is available using the Mo::build feature.
extends
-
Mo exports the
extends
keyword, to declare your parent class.Mo::Object
itself is your default parent class.Mo only supports single inheritance. If you need multiple inheritance or roles, you should upgrade to Moo.
has
-
Mo exports a
has
keyword, to generate accessors.These accessors always support both
get
andset
operations. That's it.has
name
=> ();
has
thing
=> (
foo
=>
'bar'
);
# arguments silently ignored
All arguments passed to
has
are ignored. This makes it easier to switch between Mo and Moo, without having to change all your accessors. strict
andwarnings
-
Mo turns on
use strict
anduse warnings
for you. - Embeddable
-
Mo is tiny. It is compressed into a single line. You can easily inline it in your code, should you want to do that. See Mo::Inline for more information, including a utility that will do it for you.
Mo Features
Mo is the bare minimum needed for Perl OO. Many times you'll want just a couple more features. Don't worry. Mo's got you covered:
has
name1
=> (
default
=>
sub
{
'Joe'
} );
has
name2
=> (
builder
=>
'name_builder'
);
has
name3
=> (
coerce
=>
sub
{
$_
[0]} );
has
name4
=> (
is
=>
'ro'
);
has
name4
=> (
required
=> 1 );
sub
BUILD {
my
$self
=
shift
;
...
}
Mo simply loads the feature classes Mo::build, Mo::default, Mo::builder, Mo::coerce, Mo::is and Mo::required. The first one supports BUILD constructing and the other three add their magics to has
. A Mo::Feature module can enhance new
, extends
and has
, and also add new export subs, or remove existing ones. Features can also be combined for a single accessor. See Mo::Features for a list of all the features and for an explanation of the Feature API..
See
Status
Authors
Ingy döt Net <ingy@cpan.org>
Damien 'dams' Krotkine <dams@cpan.org>
Matt S. Trout (mst) <mst@shadowcat.co.uk>
Christian Walde <walde.christian@googlemail.com>
Alessandro Ranellucci (aar/alexrj) <aar@cpan.org>
Carlos Lima (priodev) <carlos@cpan.org>
Copyright and License
Copyright (c) 2011-2013. Ingy döt Net.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See http://www.perl.com/perl/misc/Artistic.html