![]() 8.42. Class::ISAAllows 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. ![]() Copyright © 2002 O'Reilly & Associates. All rights reserved. |
|