8.42. Class::ISA
Allows you to scan
@ISA—in order and without
duplicates—for names of classes that Perl would scan to find a
method. This is important when using classes that are derived from
other classes, which are themselves derived from other classes, and
so forth. Class::ISA is bundled with the Perl 5.8 source kit.
Let''s say that you called
SomeClass->method(). Perl searches for
method() first in SomeClass, but will search its
superclasses for method() if it
doesn''t find it in SomeClass. For example:
@SomeClass::ISA = qw(SomeOther SomeOtherOther SomeOtherOtherOther);
use Class::ISA;
print "SomeClass::ISA path is:\n ",
join(", ", Class::ISA::super_path(`SomeClass'')), "\n";
This prints:
SomeOther, SomeOtherOther, SomeOtherOtherOther
Class::ISA doesn''t export anything. If classes
erroneously inherit from each other; i.e., if
there''s a loop (or cycle) between
what''s inherited between classes, Perl throws an
error, and Class::ISA itself will ignore the loop. If Perl
can''t find the method in the @ISA
tree, it looks in UNIVERSAL, but Class::ISA does not. You may do
something like the following to search in UNIVERSAL as well:
@supers = (Class::Tree::super_path($CLASS), `UNIVERSAL'');
Here are the Class::ISA methods.
Class::ISA::self_and_super_path($CLASS)
Identical to super_path, except that
$CLASS is included as the first element.
Class::ISA::self_and_super_versions($CLASS)
Returns a hash with keys that are $CLASS (and its
superclasses) and values that are the contents of the
$VERSION of each class. If
$VERSION does not exist,
sel_and_super_versions returns
undef.
Class::ISA::super_path(class)
Returns an ordered list of names of classes that Perl would search
through to find a method. Note that no duplicates will be allowed in
the list; nor will class be included in
the list. UNIVERSAL is not included in the list, but if you need it,
you should add it to the end of the list.