NAME
Bread::Board::Svc - shortcuts for Bread::Board::service function
VERSION
version 0.02
SYNOPSIS
use Bread::Board::Svc qw(svc svc_singleton);
# instead of
service router => (
class => 'Router::Pygmy',
dependencies => ['routes'],
);
# you can write positionally
svc 'router', 'Router::Pygmy', ['routes'];
# instead of
service app_data => (
dependencies => ['app_home'],
block => sub {
my $s = shift;
my $p = $s->params;
dir( $p->{app_home}, 'var' );
}
);
# you can write
svc app_data => ( \['app_home'], sub { dir( shift(), 'var' ) } );
# or
svc 'app_data', \['app_home'], sub { dir( shift(), 'var' ) };
DESCRIPTION
This module provides shortcut for Bread::Board::Service with positional params.
EXPORTED FUNCTIONS
All functions are exported on demand.
- svc($name, @args)
-
Creates service by calling Bread::Board::service internally.
- svc_singleton($name, @args)
-
Same as
svc
but addslifecycle => 'Singleton'
to Bread::Board::service params.
The argument combinations are:
- svc($name, $class, $deps, $body)
- svc($name, $class, $deps)
- svc($name, $deps, $body)
- svc($name, $value)
-
This combination just passes args to Bread::Board::service.
When the service is about to be resolved, then $body
subroutine is called. The arguments are $class
(if present) and the list of resolved dependencies.
If $deps
is a hashref or an arrayref, it has same meaning as for dependencies and resolved dependencies are passed as << $key => $value >>. If $deps
is a reference to an arrayref (\ [ $path1, $path2, ... ]
), then only the dependency values are passed to block, without the names (the names are constructed artificially).
If $body
is ommitted then the constructor of $class
is called (see Bread::Board::ConstructorInjection).
It should be noted that $class
is loaded lazily (before first resolution).
AUTHOR
Roman Daniel <roman@daniel.cz>
COPYRIGHT AND LICENSE
This software is copyright (c) 2016 by Roman Daniel.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.