NAME
MooseX::Privacy - Provides the syntax to restrict/control visibility of your methods
VERSION
version 0.05
SYNOPSIS
use
MooseX::Privacy;
has
config
=> (
is
=>
'rw'
,
isa
=>
'Some::Config'
,
traits
=> [
qw/Private/
],
);
has
username
=> (
is
=>
'rw'
,
isa
=>
'Str'
,
traits
=> [
qw/Protected/
],
);
private_method
foo
=>
sub
{
return
23;
};
protected_method
bar
=>
sub
{
return
42;
};
DESCRIPTION
MooseX::Privacy brings the concept of private and protected methods to your class.
METHODS
Private
When you declare a method as private, this method can be called only within the class.
package
Foo;
use
Moose;
use
MooseX::Privacy;
private_method
foo
=>
sub
{
return
23 };
sub
mul_by_foo {
my
$self
=
shift
;
$self
->foo *
$_
[0] }
1;
my
$foo
= Foo->new;
$foo
->foo;
# die
$foo
->mul_by_foo;
# ok
Protected
When you declare a method as protected, this method can be called only within the class AND any of it's subclasses.
package
Foo;
use
Moose;
use
MooseX::Privacy;
protected_method
foo
=>
sub
{
return
23 };
package
Bar;
use
Moose;
extends
Foo;
sub
bar {
my
$self
=
shift
;
$self
->foo }
1;
my
$foo
= Foo->new;
$foo
->foo;
# die
my
$bar
= Bar->new;
$bar
->bar;
# ok
Attributes
Private
When the Private traits is applied to an attribute, this attribute can only be read or set within the class.
Protected
When the Protected traits is applied to an attribute, this attribute can only be read or set within the class AND any of his subclasses.
AUTHOR
franck cuny <franck@lumberjaph.net>
COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by franck cuny.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.