Mojo::Base(3p)        User Contributed Perl Documentation       Mojo::Base(3p)



NAME
       Mojo::Base - Minimal Base Class For Mojo Projects

SYNOPSIS
         package Cat;
         use Mojo::Base -base;

         has 'mouse';
         has paws => 4;
         has [qw/ears eyes/] => 2;

         package Tiger;
         use Mojo::Base 'Cat';

         has stripes => 42;

         package main;

         my $mew = Cat->new(mouse => 'Mickey');
         print $mew->paws;
         print $mew->paws(5)->paws;

         my $rawr = Tiger->new(stripes => 23);
         print $rawr->ears * $rawr->stripes;

DESCRIPTION
       Mojo::Base is a simple base class for Mojo projects.

FUNCTIONS
       Mojo::Base exports the following functions if imported with the "-base"
       flag or a base class.

         # Automatically enables "strict" and "warnings"
         use Mojo::Base -base;
         use Mojo::Base 'SomeBaseClass';

       Both forms save a lot of typing.

         # use Mojo::Base -base;
         use strict;
         use warnings;
         use base 'Mojo::Base';
         sub has { Mojo::Base::attr(__PACKAGE__, @_) }

         # use Mojo::Base 'SomeBaseClass';
         use strict;
         use warnings;
         use base 'SomeBaseClass';
         use Mojo::Base;
         sub has { Mojo::Base::attr(__PACKAGE__, @_) }

   "has"
         has 'name';
         has [qw/name1 name2 name3/];
         has name => 'foo';
         has name => sub {...};
         has [qw/name1 name2 name3/] => 'foo';
         has [qw/name1 name2 name3/] => sub {...};

       Create attributes, just like the "attr" method.

METHODS
       Mojo::Base implements the following methods.

   "new"
         my $instance = BaseSubClass->new;
         my $instance = BaseSubClass->new(name => 'value');
         my $instance = BaseSubClass->new({name => 'value'});

       This base class provides a basic object constructor.  You can pass it
       either a hash or a hash reference with attribute values.

   "attr"
         __PACKAGE__->attr('name');
         __PACKAGE__->attr([qw/name1 name2 name3/]);
         __PACKAGE__->attr(name => 'foo');
         __PACKAGE__->attr(name => sub {...});
         __PACKAGE__->attr([qw/name1 name2 name3/] => 'foo');
         __PACKAGE__->attr([qw/name1 name2 name3/] => sub {...});

       Create attributes.  An arrayref can be used to create more than one
       attribute.  Pass an optional second argument to set a default value, it
       should be a constant or a sub reference.  The sub reference will be
       excuted at accessor read time if there's no set value.

SEE ALSO
       Mojolicious, Mojolicious::Guides, <http://mojolicio.us>.



perl v5.12.2                      2011-03-16                    Mojo::Base(3p)
