diff options
Diffstat (limited to 'posts/2009-06-30-private-and-protected-methods-with-moose.org')
| -rw-r--r-- | posts/2009-06-30-private-and-protected-methods-with-moose.org | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/posts/2009-06-30-private-and-protected-methods-with-moose.org b/posts/2009-06-30-private-and-protected-methods-with-moose.org deleted file mode 100644 index bda5479..0000000 --- a/posts/2009-06-30-private-and-protected-methods-with-moose.org +++ /dev/null @@ -1,51 +0,0 @@ -Yesterday, one of our interns asked me a question about private method -in Moose. I told him that for Moose as for Perl, there is no such things -as private method. By convention, methods prefixed with '\_' are -considered private. - -But I was curious to see if it would be something complicated to -implement in Moose. First, I've started to look at how the 'augment' -keyword is done. I've then hacked Moose directly to add the private -keyword. After asking advice to nothingmuch, he recommended me that I -implement this in a MooseX::* module instead. The result is here. - -From the synopsis, MooseX::MethodPrivate do: - -#+BEGIN_SRC perl - package Foo; - use MooseX::MethodPrivate; - - private 'foo' => sub { - }; - - protected 'bar' => sub { - }; - - - my $foo = Foo->new; - $foo->foo; # die, can't call foo because it's a private method - $foo->bar; # die, can't call bar because it's a protected method - - package Bar; - use MooseX::MethodPrivate; - extends qw/Foo/; - - sub baz { - my $self = shift; - $self->foo; #die, can't call foo because it's a private method - $self->bar; # ok, can call this method because we extends Foo and - # it's a protected method - } -#+END_SRC - -I was surprised to see how easy it's to extend Moose syntax. All I've -done was this: - -#+BEGIN_SRC perl - Moose::Exporter->setup_import_methods( - with_caller => [qw( private protected )],); -#+END_SRC - -and write the =private= and =protected= sub. I'm sure there is some -stuff I can do to improve this, but for a first test, I'm happy with the -result and still amazed how easy it was to add this two keywords. |
