GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Class::Forward(3) User Contributed Perl Documentation Class::Forward(3)

Class::Forward - Namespace Dispatch and Resolution

version 0.100006

    use Class::Forward;

    # create a resolution object
    my $res = Class::Forward->new(namespace => 'MyApp');

    # returns MyApp::Data
    say $res->forward('data');

    # returns a MyApp::Data instance
    my $data  = $res->forward('data.new');

    # returns the string /my_app/data
    my $string = $res->reverse('data.new');

    # returns MyApp::Data
    say $res->forward($string);

Class::Forward is designed to resolve Perl namespaces from shorthand (which is simply a file-path-like specification). Class::Forward can also be used to dispatch method calls using said shorthand. See the following exported functions for examples on how this can be used.

The exported function clsf is responsible for resolving your shorthand. The following is an example of how it functions:

    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)

    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.

The exported function clsr is responsible for resolving your shorthand. The following is an example of how it functions:

    package App::Store;

    use CGI;
    use Class::Forward;

    clsr;                             # returns /app/store
    clsr './user';                    # returns /app/store/user
    clsr './user.new', name => 'N30'; # returns /app/store/user
    clsr './user_profile';            # returns /app/store/user_profile
    clsr '../user';                   # returns /app/user
    clsr '//';                        # returns /app
    clsr '//.new';                    # returns /app
    clsr '//view';                    # returns /app/view
    clsr '//view.new';                # returns /app/view
    clsr '//view.new.render';         # returns /app/view
    clsr 'cgi';                       # returns /app/store/cgi
    clsr '/cgi';                      # returns /cgi

    1;

The clsr function takes three arguments, the shorthand to be translated (required), the offset (optional level of namespace nodes to omit left-to-right), and the delimiter to be used to generate the resulting path (defaults to forward-slash).

The new method is used to instantiate a new instance.

The namespace method is used to get/set the root namespace used as an anchor for all resolution requests.

    my $namespace = $self->namespace('MyApp');

The forward (or forward_lookup) method is used to resolve Perl namespaces from path-like shorthand.

    say $self->forward('example');
    # given a default namespace of MyApp
    # prints MyApp::Example

The reverse method (or reverse_lookup) is used to generate path-like shorthand from Perl namespaces.

    say $self->reverse('Simple::Example');
    # given a default namespace of MyApp
    # prints /my_app/simple/example

    say $self->reverse('Simple::Example', 1);
    # given a default namespace of MyApp
    # prints simple/example

    say $self->reverse('Simple::Example', 1, '_');
    # given a default namespace of MyApp
    # prints simple_example

Class::Forward was designed to provide shorthand and easy access to class namespaces in an environment where you're dealing with a multitude of long well-named classes. In that vein, it provides an alternative to modules like aliased, aliased::factory, as, and the like, and also modules like Namespace::Dispatch which are similar enough to be mentioned but really address a completely different issue.

Al Newkirk <anewkirk@ana.io>

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.

2013-08-08 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.