The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Class::Forward - A class dispatcher that handles namespaces like paths

VERSION

version 0.08

SYNOPSIS

    # OO Usage and Syntax

    package MyApp;

    use Class::Forward;

    ...

    sub class {

        my ($self, $shorthand, @arguments) = @_;

        my $class = Class::Forward->new(namespace => ref $self);

        return $class->forward($shorthand, @arguments);

    }

    package main;

    my $app = MyApp->new;

    my $data = $app->class('data.new'); # returns a new MyApp::Data object

DESCRIPTION

Class::Forward is designed to simply return class names or dispatch method calls using shorthand. It uses file-system path specification conventions to match against class namespaces.

EXPORTS

clsf

The exported function clsf is responsible for resolving your shorthand. It begets the follow functionality:

    package App::Store;

    use CGI;
    use Class::Forward;

    clsf;                             # returns App::Store
    clsf './user';                    # returns App::Store::User
    clsf './user.new', name => 'N30'; # return a new App::Store::User object
    clsf './user_profile.new';        # ... App::Store::UserProfile object
    clsf '../user';                   # returns App::User
    clsf '//';                        # returns App; (top of the calling class)
    clsf '//.new';                    # returns a new App object
    clsf '//view';                    # ... returns App::View
    clsf '//view.new';                # ... returns a new App::View object
    clsf '//view.new.render';         # ... dispatches methods in succession
    clsf 'cgi';                       # returns App::Store::Cgi
    clsf '/cgi';                      # returns Cgi (or CGI if already loaded)

    # yada yada

    1;

The clsf function takes two arguments, the shorthand to be translated, and an optional list of arguments to be passed to the last method appended to the shorthand.

NOTE: Class::Forward also has support for walking up a path although this should be done with caution, writing code that executes other code based on its namespace's relativity to the current class could yield unpredictable results, especially if the calling class is ever relocated.

SEE ALSO

Along my travels I recall visiting a similar module on the CPAN called Namespace::Dispatch which provides somewhat of the same functionality. Additionally, since this module looks like something INGY would upload, you might want to check out his offerings also.

AUTHOR

Al Newkirk <anewkirk@ana.io>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Al Newkirk.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.