Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
Mo(3)		      User Contributed Perl Documentation		 Mo(3)

       Mo - Micro Objects. Mo is less.

	   package Less;
	   use Mo;
	   extends 'Nothing';

	   has something => ();

       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.

	   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.

	   Mo exports a	"has" keyword, to generate accessors.

	   These accessors always support both "get" and "set" 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

       "strict"	and "warnings"
	   Mo turns on "use strict" and	"use warnings" for you.

	   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:

	   use Mo qw'build default builder coerce is required';
	   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..





       Ingy dA<paragraph>t Net <>

       Damien 'dams' Krotkine <>

       Matt S. Trout (mst) <>

       Christian Walde <>

       Alessandro Ranellucci (aar/alexrj) <>

       Carlos Lima (priodev) <>

Copyright and License
       Copyright (c) 2011-2013.	Ingy dA<paragraph>t Net.

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


perl v5.32.0			  2016-07-06				 Mo(3)

Name | Synopsis | Description | Core Features | Mo Features | See | Status | Authors | Copyright and License

Want to link to this manual page? Use this URL:

home | help