Book HomeJava and XSLTSearch this book

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.

self_and_super_path

Class::ISA::self_and_super_path($CLASS)

Identical to super_path, except that $CLASS is included as the first element.

self_and_super_versions

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.

super_path

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.



Library Navigation Links

Copyright © 2002 O'Reilly & Associates. All rights reserved.