[Moose-commits] r7631 - Moose/trunk/lib/Moose/Cookbook/Extending

autarch at code2.0beta.co.uk autarch at code2.0beta.co.uk
Thu Feb 12 16:57:56 GMT 2009


Author: autarch
Date: 2009-02-12 08:57:55 -0800 (Thu, 12 Feb 2009)
New Revision: 7631

Modified:
   Moose/trunk/lib/Moose/Cookbook/Extending/Recipe3.pod
Log:
Revised extending recipe 3


Modified: Moose/trunk/lib/Moose/Cookbook/Extending/Recipe3.pod
===================================================================
--- Moose/trunk/lib/Moose/Cookbook/Extending/Recipe3.pod	2009-02-12 16:51:31 UTC (rev 7630)
+++ Moose/trunk/lib/Moose/Cookbook/Extending/Recipe3.pod	2009-02-12 16:57:55 UTC (rev 7631)
@@ -29,29 +29,28 @@
 
 =head1 DESCRIPTION
 
-Often you find that you want to share some behavior between all your
-classes. One way to do that is to make a base class and simply add
-C<S<extends 'MyApp::Base'>> to every class in your
-application. However, that can get tedious. Instead, you can simply
-create your Moose-alike module that sets the base object class to
-C<MyApp::Base> for you.
+A common extension is to provide an alternate base class. One way to
+do that is to make a C<MyApp::base> and add C<S<extends
+'MyApp::Base'>> to every class in your application. That's pretty
+tedious. Instead, you can create a Moose-alike module that sets the
+base object class to C<MyApp::Base> for you.
 
 Then, instead of writing C<S<use Moose>> you can write C<S<use
 MyApp::UseMyBase>>.
 
 In this particular example, our base class issues some debugging
-output every time a new object is created, but you can surely think of
-some more interesting things to do with your own base class.
+output every time a new object is created, but you can think of some
+more interesting things to do with your own base class.
 
-This all works because of the magic of L<Moose::Exporter>. When we
-call C<< Moose::Exporter->setup_import_methods( also => 'Moose' ) >>
-it builds an C<import> and C<unimport> method for you. The C<< also =>
-'Moose' >> bit says that we want to export everything that Moose does.
+This uses the magic of L<Moose::Exporter>. When we call S<C<<
+Moose::Exporter->setup_import_methods( also => 'Moose' ) >>> it builds
+C<import> and C<unimport> methods for you. The S<C<< also => 'Moose'
+>>> bit says that we want to export everything that Moose does.
 
 The C<import> method that gets created will call our C<init_meta>
-method, passing it C<< for_caller => $caller >> as its arguments. The
-C<$caller> is set to the class that actually imported us in the first
-place.
+method, passing it S<C<< for_caller => $caller >>> as its
+arguments. The C<$caller> is set to the class that actually imported
+us in the first place.
 
 See the L<Moose::Exporter> docs for more details on its API.
 
@@ -69,6 +68,12 @@
 
   no MyApp::UseMyBase;
 
+=head1 CONCLUSION
+
+This is an awful lot of magic for a simple base class. You will often
+want to combine a metaclass trait with a base class extension, and
+that's when this technique is useful.
+
 =head1 AUTHOR
 
 Dave Rolsky E<lt>autarch at urth.orgE<gt>




More information about the Moose-commits mailing list