NAME
Class::Unique - Create a unique subclass for every instance
VERSION
Version 0.04
SYNOPSIS
DESCRIPTION
Class::Unique is a base class which provides a constructor and some utility routines for creating objects which instantiate into a unique subclass.
If MyClass is a subclass of Class::Unique, and inherrits Class::Unique's constructor, then every object returned by MyClass->new
will be blessed into a dynamically created subclass of MyClass. This allows you to modify package data on a per-instance basis.
Class::Prototyped provides similar functionality; use this module if you want per-instance subclasses but you don't need a full prototype-based OO framework.
METHODS
The following methods are inherrited.
new()
-
Constructor. Returns a hash ref blessed into a new dynamically created package. If you need to override the constructor, make sure you get your object by using
SUPER::new
instead of blessing it yourself.package
MyClass;
sub
new {
my
$class
=
shift
;
my
$self
=
$class
->SUPER::new(
@_
);
# fiddle with $self here....
return
$self
;
}
install()
-
Install a new symbol into an object's namespace. This can be used to dynamically override an inherrited subroutine, e.g.:
my
$code_ref
=
sub
{
print
"wahoo!\n"
};
$obj
->install(
exclaim
=>
$code_ref
);
$obj
->exclaim;
This is really just a shortcut for doing:
my
$pkg
=
ref
$obj
;
no
strict
'refs'
;
*{
$pkg
.
'::subname'
} =
$code_ref
;
You can also use
install
to add other package symbols:my
@data
= ( 1, 2, 3, 4 );
$obj
->install(
data
=> \
@data
);
AUTHOR
Mike Friedman, <friedo at friedo dot com>
THANKS
Thanks to Stevan Little for submitting some unit tests.
BUGS
Please report any bugs or feature requests to bug-class-unique@rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Class-Unique. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
COPYRIGHT & LICENSE
Copyright 2005 Mike Friedman, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.