NAME
MooseX::SingletonMethod - Moose with Singleton Method facility.
VERSION
Version 0.02
SYNOPSIS
Simple usage example....
Alternative to MooseX::SingletonMethod you can just use MooseX::SingletonMethod::Role directly like so...
DESCRIPTION
What is a "Singleton Method?"
TBD.
What is "MooseX::SingletonMethod"?
Using roles you can already create Singleton Methods with Moose:
- http://transfixedbutnotdead.com/2009/06/03/using-moose-roles-to-create-singleton-methods/
- http://transfixedbutnotdead.com/2009/06/10/roles-singleton-methods-moosexdeclare/
- http://transfixedbutnotdead.com/2009/06/19/moose-fairy-dust/
- http://transfixedbutnotdead.com/2009/06/28/moose-fairy-dust-now-with-diagrams/
- http://transfixedbutnotdead.com/2009/07/07/moose-singleton-method-now-without-roles/
MooseX::SingletonMethod simple adds a nicety wrapper around this.
There are three methods available to create Singleton Methods using MooseX::SingletonMethod. Here are some examples using MooseX::Declare with MooseX::SingletonMethod::Role:
use
MooseX::Declare;
class FooBarBaz
with
MooseX::SingletonMethod::Role {
method comes_with {
"comes with FooBarBaz class"
}
}
# one way to create singleton method....
my
$foo
= FooBarBaz->new;
$foo
->become_singleton;
# make $foo a singleton
$foo
->meta->add_method(
foo
=>
'foo!'
);
# add method "foo" using meta
# and another.....
my
$bar
= FooBarBaz->new;
$bar
->add_singleton_method(
bar
=>
sub
{
'bar!'
} );
# and finally multiple methods....
my
$baz
= FooBarBaz->new;
$baz
->add_singleton_methods(
baz1
=>
sub
{
'baz1!'
},
baz2
=>
sub
{
'baz2!'
},
);
# Methods each object now has:
#
# $foo -> [ comes_with, foo ]
# $bar -> [ comes_with, bar ]
# $baz -> [ comes_with, baz1, baz2 ]
Things to note
Each time add_singleton_method or add_singleton_methods is called it creates a new anonymous class which the object is blessed into.
If you want to add more methods to already bless anon class then simply use ->meta->add_method like in above $foo example.
EXPORT
None
METHODS
become_singleton
Makes the object a singleton (by creating an anonymous class which the object is blessed with):
$baz
->become_singleton;
add_singleton_method
Adds a singleton method to this object (same as above + creates prescribed method):
$bar
->add_singleton_method(
bar
=>
sub
{
'bar!'
} );
add_singleton_methods
Same as above except allows multiple method declaration:
$baz
->add_singleton_methods(
baz1
=>
sub
{
'baz1!'
},
baz2
=>
sub
{
'baz2!'
},
);
init_meta
Internal Moose method
AUTHOR
Barry Walsh, <draegtun at cpan.org>
BUGS
Please report any bugs or feature requests to bug-moosex-singletonmethod at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=MooseX-SingletonMethod. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc MooseX::SingletonMethod
You can also look for information at:
RT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-SingletonMethod
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
ACKNOWLEDGEMENTS
DISCLAIMER
This is beta software. I'll strive to make it better each and every day!
However I accept no liability whatsoever should this software do what you expected ;-)
COPYRIGHT & LICENSE
Copyright 2009 Barry Walsh (Draegtun Systems Ltd), all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.