Skip to content
Browse files

more exporter stuff

  • Loading branch information...
1 parent f079b6d commit adaa13d5a908d252dc68eb791be06506287ea63a @lestrrat lestrrat committed
Showing with 7 additions and 17 deletions.
  1. +7 −17 Moose/Cookbook/Extending/Recipe2.pod
View
24 Moose/Cookbook/Extending/Recipe2.pod
@@ -10,25 +10,13 @@ Moose::Cookbook::Extending::Recipe2 - オブジェクトのベースクラス用
package MooseX::Debugging;
- use Moose ();
use Moose::Exporter;
- use Moose::Util::MetaRole;
Moose::Exporter->setup_import_methods;
- sub init_meta {
- shift;
- my %options = @_;
-
- my $meta = Moose->init_meta(%options);
-
- Moose::Util::MetaRole::apply_base_class_roles(
- for_class => $options{for_class},
- roles => ['MooseX::Debugging::Role::Object'],
- );
-
- return $meta;
- }
+ Moose::Exporter->setup_import_methods(
+ base_class_roles => ['MooseX::Debugging::Role::Object'],
+ );
package MooseX::Debugging::Role::Object;
@@ -50,9 +38,11 @@ Moose::Cookbook::Extending::Recipe2 - オブジェクトのベースクラス用
いくつかのコードについてはもっと細かく見ていきましょう。
- Moose::Exporter->setup_import_methods;
+ Moose::Exporter->setup_import_methods(
+ base_class_roles => ['MooseX::Debugging::Role::Object'],
+ );
-これはC<MooseX::Debugging>パッケージにC<import>メソッドを用意するものです。ここでは実際になにかをエクスポートするわけではないのでC<setup_import_methods>にはパラメータを渡していませんが、C<import>メソッドがないと私たちのC<init_meta>メソッドが確実に呼ばれることは保証できないのです。
+これはC<MooseX::Debugging>パッケージにC<import>メソッドを用意するものです。ここでは実際になにかをエクスポートするわけではないのでC<setup_import_methods>にはパラメータを渡していませんが、C<import>メソッドがないと私たちのC<init_meta>メソッドが確実に呼ばれることは保証できないのです。なおC<init_meta>メソッド自体はC<base_class_roles>オプションを指定することにより、C<setup_import_methods>によって自動的に生成されています。生成されたC<init_meta>はL<Moose::Util::MetaRole::apply_base_class_roles|Moose::Util::MetaRole/apply_base_class_roles>を呼び出します。
それから、私たちのC<init_meta>メソッドにはこのような行があります。

0 comments on commit adaa13d

Please sign in to comment.
Something went wrong with that request. Please try again.