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

FreeBSD Manual Pages

  
 
  

home | help
Mojo::Base(3)	      User Contributed Perl Documentation	 Mojo::Base(3)

NAME
       Mojo::Base - Minimal base class for Mojo	projects

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

	 has name => 'Nyan';
	 has ['age', 'weight'] => 4;

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

	 has friend  =>	sub { Cat->new };
	 has stripes =>	42;

	 package main;
	 use Mojo::Base	-strict;

	 my $mew = Cat->new(name => 'Longcat');
	 say $mew->age;
	 say $mew->age(3)->weight(5)->age;

	 my $rawr = Tiger->new(stripes => 38, weight =>	250);
	 say $rawr->tap(sub { $_->friend->name('Tacgnol') })->weight;

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

	 # Automatically enables "strict", "warnings", "utf8" and Perl 5.10 features
	 use Mojo::Base	-strict;
	 use Mojo::Base	-base;
	 use Mojo::Base	'SomeBaseClass';

       All three forms save a lot of typing.

	 # use Mojo::Base -strict;
	 use strict;
	 use warnings;
	 use utf8;
	 use feature ':5.10';
	 use IO::Handle	();

	 # use Mojo::Base -base;
	 use strict;
	 use warnings;
	 use utf8;
	 use feature ':5.10';
	 use IO::Handle	();
	 use Mojo::Base;
	 push @ISA, 'Mojo::Base';
	 sub has { Mojo::Base::attr(__PACKAGE__, @_) }

	 # use Mojo::Base 'SomeBaseClass';
	 use strict;
	 use warnings;
	 use utf8;
	 use feature ':5.10';
	 use IO::Handle	();
	 require SomeBaseClass;
	 push @ISA, 'SomeBaseClass';
	 use Mojo::Base;
	 sub has { Mojo::Base::attr(__PACKAGE__, @_) }

FUNCTIONS
       Mojo::Base implements the following functions, which can	be imported
       with the	"-base"	flag or	by setting a base class.

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

       Create attributes for hash-based	objects, just like the "attr" method.

METHODS
       Mojo::Base implements the following methods.

   attr
	 $object->attr('name');
	 SubClass->attr('name');
	 SubClass->attr(['name1', 'name2', 'name3']);
	 SubClass->attr(name =>	'foo');
	 SubClass->attr(name =>	sub {...});
	 SubClass->attr(['name1', 'name2', 'name3'] => 'foo');
	 SubClass->attr(['name1', 'name2', 'name3'] => sub {...});

       Create attribute	accessors for hash-based objects, an array reference
       can be used to create more than one at a	time. Pass an optional second
       argument	to set a default value,	it should be a constant	or a callback.
       The callback will be executed at	accessor read time if there's no set
       value, and gets passed the current instance of the object as first
       argument. Accessors can be chained, that	means they return their
       invocant	when they are called with an argument.

   new
	 my $object = SubClass->new;
	 my $object = SubClass->new(name => 'value');
	 my $object = SubClass->new({name => 'value'});

       This base class provides	a basic	constructor for	hash-based objects.
       You can pass it either a	hash or	a hash reference with attribute
       values.

   tap
	 $object = $object->tap(sub {...});
	 $object = $object->tap('some_method');
	 $object = $object->tap('some_method', @args);

       Tap into	a method chain to perform operations on	an object within the
       chain (also known as a K	combinator or Kestrel).	The object will	be the
       first argument passed to	the callback, and is also available as $_. The
       callback's return value will be ignored;	instead, the object (the
       callback's first	argument) will be the return value. In this way,
       arbitrary code can be used within (i.e.,	spliced	or tapped into)	a
       chained set of object method calls.

	 # Longer version
	 $object = $object->tap(sub { $_->some_method(@args) });

	 # Inject side effects into a method chain
	 $object->foo('A')->tap(sub { say $_->foo })->foo('B');

SEE ALSO
       Mojolicious, Mojolicious::Guides, <http://mojolicious.org>.

perl v5.24.1			  2017-01-12			 Mojo::Base(3)

NAME | SYNOPSIS | DESCRIPTION | FUNCTIONS | METHODS | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Mojo::Base&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help