| 1 | ==============================================================================
|
|---|
| 2 | Release of version 0.60 of NEXT
|
|---|
| 3 | ==============================================================================
|
|---|
| 4 |
|
|---|
| 5 |
|
|---|
| 6 | NAME
|
|---|
| 7 |
|
|---|
| 8 | NEXT - Pseudo class for method redispatch
|
|---|
| 9 |
|
|---|
| 10 |
|
|---|
| 11 | DESCRIPTION
|
|---|
| 12 |
|
|---|
| 13 | NEXT.pm adds a pseudoclass named C<NEXT> to any program that
|
|---|
| 14 | uses it. If a method C<m> calls C<$self->NEXT::m()>, the call to
|
|---|
| 15 | C<m> is redispatched as if the calling method had not originally
|
|---|
| 16 | been found.
|
|---|
| 17 |
|
|---|
| 18 | In other words, a call to C<$self->NEXT::m()> resumes the
|
|---|
| 19 | depth-first, left-to-right search of parent classes that
|
|---|
| 20 | resulted in the original call to C<m>.
|
|---|
| 21 |
|
|---|
| 22 | Note that this is not the same thing as C<$self->SUPER::m()>, which
|
|---|
| 23 | begins a new dispatch that is restricted to searching the ancestors
|
|---|
| 24 | of the current class. C<$self->NEXT::m()> can backtrack past
|
|---|
| 25 | the current class -- to look for a suitable method in other
|
|---|
| 26 | ancestors of C<$self> -- whereas C<$self->SUPER::m()> cannot.
|
|---|
| 27 |
|
|---|
| 28 | An particularly interesting use of redispatch is in
|
|---|
| 29 | C<AUTOLOAD>'ed methods. If such a method determines that it is
|
|---|
| 30 | not able to handle a particular call, it may choose to
|
|---|
| 31 | redispatch that call, in the hope that some other C<AUTOLOAD>
|
|---|
| 32 | (above it, or to its left) might do better.
|
|---|
| 33 |
|
|---|
| 34 | The module also allows you to specify that multiply inherited
|
|---|
| 35 | methods should only be redispatched once, and what should
|
|---|
| 36 | happen if no redispatch is possible.
|
|---|
| 37 |
|
|---|
| 38 |
|
|---|
| 39 | AUTHOR
|
|---|
| 40 |
|
|---|
| 41 | Damian Conway (damian@conway.org)
|
|---|
| 42 |
|
|---|
| 43 |
|
|---|
| 44 | COPYRIGHT
|
|---|
| 45 |
|
|---|
| 46 | Copyright (c) 2000-2001, Damian Conway. All Rights Reserved.
|
|---|
| 47 | This module is free software. It may be used, redistributed
|
|---|
| 48 | and/or modified under the same terms as Perl itself.
|
|---|
| 49 |
|
|---|
| 50 |
|
|---|
| 51 | ==============================================================================
|
|---|
| 52 |
|
|---|
| 53 | CHANGES IN VERSION 0.60
|
|---|
| 54 |
|
|---|
| 55 |
|
|---|
| 56 | - Re-re-re-fixed NEXT::UNSEEN bug under diamond inheritance
|
|---|
| 57 | (Note to self: don't code whilst on vacation!)
|
|---|
| 58 |
|
|---|
| 59 | - Implemented and documented EVERY functionality
|
|---|
| 60 |
|
|---|
| 61 |
|
|---|
| 62 | ==============================================================================
|
|---|
| 63 |
|
|---|
| 64 | AVAILABILITY
|
|---|
| 65 |
|
|---|
| 66 | NEXT has been uploaded to the CPAN
|
|---|
| 67 |
|
|---|
| 68 | ==============================================================================
|
|---|