The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Venus::Role::Proxyable - Proxyable Role

ABSTRACT

Proxyable Role for Perl 5

SYNOPSIS

package Example;

use Venus::Class;

with 'Venus::Role::Proxyable';

attr 'test';

sub build_proxy {
  my ($self, $package, $method, @args) = @_;
  return sub { [$self, $package, $method, @args] } if $method eq 'anything';
  return undef;
}

package main;

my $example = Example->new(test => time);

# $example->anything(1..4);

DESCRIPTION

This package provides a hook into method dispatch resoluton via a wrapper around the AUTOLOAD routine which processes calls to routines which don't exist.

METHODS

This package provides the following methods:

build_proxy

build_proxy(string $package, string $method, any @args) (coderef | undef)

The build_proxy method should return a code reference to fulfill the method dispatching request, or undef to result in a method not found error.

Since 0.01

build_proxy example 1
package main;

my $example = Example->new(test => 123);

my $build_proxy = $example->build_proxy('Example', 'everything', 1..4);

# undef
build_proxy example 2
package main;

my $example = Example->new(test => 123);

my $build_proxy = $example->build_proxy('Example', 'anything', 1..4);

# sub { ... }

AUTHORS

Awncorp, awncorp@cpan.org

LICENSE

Copyright (C) 2022, Awncorp, awncorp@cpan.org.

This program is free software, you can redistribute it and/or modify it under the terms of the Apache license version 2.0.