|
NAMEData::Object::Role::Buildable ABSTRACTBuildable Role for Perl 5 SYNOPSIS package Vehicle;
use Moo;
with 'Data::Object::Role::Buildable';
has name => (
is => 'rw'
);
1;
DESCRIPTIONThis package provides methods for hooking into object construction of the consuming class, e.g. handling single-arg object construction. SCENARIOSThis package supports the following scenarios: buildarg package Car;
use Moo;
extends 'Vehicle';
sub build_arg {
my ($class, $name) = @_;
# do something with $name or $class ...
return { name => $name };
}
package main;
my $car = Car->new('tesla');
This package supports handling a "build_arg" method, as a hook into object construction, which is called and passed a single argument if a single argument is passed to the constructor. buildargs package Sedan;
use Moo;
extends 'Car';
sub build_args {
my ($class, $args) = @_;
# do something with $args or $class ...
$args->{name} = ucfirst $args->{name};
return $args;
}
package main;
my $sedan = Sedan->new('tesla');
This package supports handling a "build_args" method, as a hook into object construction, which is called and passed a "hashref" during object construction. buildself package Taxicab;
use Moo;
extends 'Sedan';
sub build_self {
my ($self, $args) = @_;
# do something with $self or $args ...
$args->{name} = 'Toyota';
return;
}
package main;
my $taxicab = Taxicab->new('tesla');
This package supports handling a "build_self" method, as a hook into object construction, which is called and passed a "hashref" during object construction. Note: Manipulating the arguments doesn't effect object's construction or properties. AUTHORAl Newkirk, "awncorp@cpan.org" LICENSECopyright (C) 2011-2019, Al Newkirk, et al. This is free software; you can redistribute it and/or modify it under the terms of the The Apache License, Version 2.0, as elucidated in the "license file" <https://github.com/iamalnewkirk/data-object-role-buildable/blob/master/LICENSE>. PROJECTWiki <https://github.com/iamalnewkirk/data-object-role-buildable/wiki> Project <https://github.com/iamalnewkirk/data-object-role-buildable> Initiatives <https://github.com/iamalnewkirk/data-object-role-buildable/projects> Milestones <https://github.com/iamalnewkirk/data-object-role-buildable/milestones> Contributing <https://github.com/iamalnewkirk/data-object-role-buildable/blob/master/CONTRIBUTE.md> Issues <https://github.com/iamalnewkirk/data-object-role-buildable/issues>
|