-
-
23 May 2022 15:17:22 UTC
- Distribution: Mojolicious
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Repository
- Issues
- Testers (1499 / 7 / 32)
- Kwalitee
Bus factor: 6- 90.64% Coverage
- License: artistic_2
- Perl: v5.16.0
- Activity
24 month- Tools
- Download (827.39KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
NAME
Mojo::DynamicMethods - Fast dynamic method dispatch
SYNOPSIS
package MyClass; use Mojo::Base -base, -signatures; use Mojo::DynamicMethods -dispatch; sub BUILD_DYNAMIC ($class, $method, $dyn_methods) { return sub {...}; } sub add_helper ($self, $name, $cb) { Mojo::DynamicMethods::register 'MyClass', $self, $name, $cb; } package main; # Generate methods dynamically (and hide them from "$obj->can(...)") my $obj = MyClass->new; $obj->add_helper(foo => sub { warn 'Hello Helper!' }); $obj->foo;
DESCRIPTION
Mojo::DynamicMethods provides dynamic method dispatch for per-object helper methods without requiring use of
AUTOLOAD
.To opt your class into dynamic dispatch simply pass the
-dispatch
flag.use Mojo::DynamicMethods -dispatch;
And then implement a
BUILD_DYNAMIC
method in your class, making sure that the key you use to lookup methods in$dyn_methods
is the same thing you pass as$ref
to "register".sub BUILD_DYNAMIC ($class, $method, $dyn_methods) { return sub ($self, @args) { my $dynamic = $dyn_methods->{$self}{$method}; return $self->$dynamic(@args) if $dynamic; my $package = ref $self; croak qq{Can't locate object method "$method" via package "$package"}; }; }
Note that this module will summon Cthulhu, use it at your own risk!
FUNCTIONS
Mojo::DynamicMethods implements the following functions.
register
Mojo::DynamicMethods::register $class, $ref, $name, $cb;
Registers the method
$name
as eligible for dynamic dispatch for$class
, and sets$cb
to be looked up for$name
by reference$ref
in a dynamic method constructed byBUILD_DYNAMIC
.SEE ALSO
Module Install Instructions
To install Mojolicious, copy and paste the appropriate command in to your terminal.
cpanm Mojolicious
perl -MCPAN -e shell install Mojolicious
For more information on module installation, please visit the detailed CPAN module installation guide.