| 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 |
============================================================================== |