The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Bot::Cobalt::Core::Role::Singleton

SYNOPSIS

  package MySingleton;
  use Moo;  
  with 'Bot::Cobalt::Core::Role::Singleton';

DESCRIPTION

A basic Moo::Role implementing singletons for Bot::Cobalt.

A singleton is a class that can only be instanced once.

Classes can consume this Role in order to gain the following methods:

instance

The instance method returns the existing singleton if there is one, or calls new to create one if not. Consumers should be instanced by calling instance rather than new:

  ## Bot::Cobalt::Core is a singleton:
  my $core = Bot::Cobalt::Core->instance(
    cfg => Bot::Cobalt::Conf->new(etc => $etc),
    var => $var,
  );

Arguments are passed to new() unmodified (if we are creating a new singleton).

has_instance

Returns boolean false if there is currently no instance.

clear_instance

Clear the singleton instance.

AUTHOR

Jon Portnoy <avenj@cobaltirc.org>

(Essentially the same as other singleton implementations such as Class::Singleton, MooseX::Singleton, MooX::Singleton etc)