NAME
MooseX::Singleton - turn your Moose class into a singleton
VERSION
Version 0.16, released 24 May 08
SYNOPSIS
package
MyApp;
use
MooseX::Singleton;
has
env
=> (
is
=>
'rw'
,
isa
=>
'HashRef[Str]'
,
default
=>
sub
{ \
%ENV
},
);
package
main;
delete
MyApp->env->{PATH};
my
$instance
= MyApp->instance;
my
$same
= MyApp->instance;
DESCRIPTION
A singleton is a class that has only one instance in an application. MooseX::Singleton
lets you easily upgrade (or downgrade, as it were) your Moose class to a singleton.
All you should need to do to transform your class is to change use Moose
to use MooseX::Singleton
. This module uses a new class metaclass and instance metaclass, so if you're doing metamagic you may not be able to use this.
MooseX::Singleton
gives your class an instance
method that can be used to get a handle on the singleton. It's actually just an alias for new
.
Alternatively, YourPackage->method
should just work. This includes accessors.
TODO
- Always more tests and doc
- Fix speed boost
-
instance
invokesnew
every timePackage->method
is called, which incurs a nontrivial runtime cost. I've implemented a short-circuit for this case, which does eliminate nearly all of the runtime cost. However, it's ugly and should be fixed in a more elegant way.
BUGS
All complex software has bugs lurking in it, and this module is no exception. If you find a bug please either email me, or add the bug to cpan-RT.
AUTHORS
Shawn M Moore <sartak@gmail.com>
Dave Rolsky <autarch@urth.org>
SOME CODE STOLEN FROM
Anders Nor Berle <debolaz@gmail.com>
AND PATCHES FROM
Ricardo SIGNES <rjbs@cpan.org>
COPYRIGHT AND LICENSE
Copyright 2007, 2008 Infinity Interactive
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.