NAME

Apache::Singleton - Singleton class for mod_perl

SYNOPSIS

package Printer;
# default:
#   Request for mod_perl env
#   Process for non-mod_perl env
use base qw(Apache::Singleton);

package Printer::PerRequest;
use base qw(Apache::Singleton::Request);

package Printer::PerProcess;
use base qw(Apache::Singleton::Process);

DESCRIPTION

Apache::Singleton works the same as Class::Singleton, but with various object lifetime (scope). See Class::Singleton first.

OBJECT LIFETIME

By inheriting one of the following sublasses of Apache::Singleton, you can change the scope of your object.

Request
use base qw(Apache::Singleton::Request);

One instance for one request. Apache::Singleton will remove instance on each request. Implemented using mod_perl pnotes API. In mod_perl environment (where $ENV{MOD_PERL} is defined), this is the default scope, so inheriting from Apache::Singleton would do the same effect.

Process
use base qw(Apache::Singleton::Process);

One instance for one httpd process. Implemented using package global. In non-mod_perl environment, this is the default scope, and you may notice this is the same beaviour with Class::Singleton ;)

So you can use this module safely under non-mod_perl environment.

SOURCE

You can contribute or fork this project via github:

http://github.com/mschout/apache-singleton

git clone git://github.com/mschout/apache-singleton.git

BUGS

Please report any bugs or feature requests to bug-apache-singleton@rt.cpan.org, or through the web interface at http://rt.cpan.org/

AUTHOR

Michael Schout <mschout@cpan.org>

Original idea by Matt Sergeant <matt@sergeant.org> and Perrin Harkins <perrin@elem.com>.

Initial implementation and versions 0.01 to 0.07 by Tatsuhiko Miyagawa <miyagawa@bulknews.net>.

COPYRIGHT & LICENSE

Copyright 2009 Michael Schout.

This program is free software; you can redistribute it and/or modify it under the terms of either:

  • the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or

  • the Artistic License version 2.0.

SEE ALSO

Apache::Singleton::Request, Apache::Singleton::Process, Class::Singleton