Class::MakeMethods::Template::ClassName - Access object's class
package MyObject;
use Class::MakeMethods::Template::ClassName (
subclass_name => [ 'type' ]
);
...
package main;
my $object = MyObject->new;
$object->type('Foo')
# reblesses object to MyObject::Foo subclass
print $object->type();
# prints "Foo".
These method types access or change information about the class an object is
associated with.
Called without arguments, returns the class name.
If called with an argument, reblesses object into that class. If the class
doesn't already exist, it will be created.
Called without arguments, returns the subclass name.
If called with an argument, reblesses object into that subclass. If the subclass
doesn't already exist, it will be created.
The subclass name is written as follows:
- •
- if it's the original, defining class: empty
- •
- if its a a package within the namespace of the original:
the distinguishing name within that namespace, without leading
"::"
- •
- if it's a package elsewhere: the full name with leading
"::"
Provides a shared hash mapping keys to class names.
class_registry => [ qw/ foo / ]
Takes a single string or a reference to an array of strings as its argument. For
each string, creates a new anonymous hash and associated accessor methods that
will map scalar values to classes in the calling package's subclass hierarchy.
The accessor methods provide an interface to the hash as illustrated below. Note
that several of these functions operate quite differently depending on the
number of arguments passed, or the context in which they are called.
- @indexes = $class_or_ref->x;
- Returns the scalar values that are indexes associated with
this class, or the class of this object.
- $class = $class_or_ref->x( $index );
- Returns the class name associated with the provided index
value.
- @classes = $class_or_ref->x( @indexes );
- Returns the associated classes for each index in
order.
- @all_indexes = $class_or_ref->x_keys;
- Returns a list of the indexes defined for this
registry.
- @all_classes = $class_or_ref->x_values;
- Returns a list of the classes associated with this
registry.
- @all_classes = $class_or_ref->unique_x_values;
- Returns a list of the classes associated with this
registry, with no more than one occurrence of any value.
- %mapping = $class_or_ref->x_hash;
- Return the key-value pairs used to store this
attribute
- $mapping_ref = $class_or_ref->x_hash;
- Returns a reference to the hash used for the mapping.
- $class_or_ref->add_x( @indexes );
- Adds an entry in the hash for each of the provided indexes,
mapping it to this class, or the class of this object.
- $class_or_ref->clear_x;
- Removes those entries from the hash whose values are this
class, or the class of this object.
- $class_or_ref->clear_xs( @indexes );
- Remove all entries from the hash.
See Class::MakeMethods for general information about this distribution.
See Class::MakeMethods::Template for information about this family of
subclasses.