Add a mention of load order issues
Dave Rolsky [Thu, 29 Jan 2009 18:20:10 +0000 (18:20 +0000)]
lib/Moose/Manual/Types.pod

index aa9c73b..8d6d8f0 100644 (file)
@@ -396,6 +396,25 @@ keyword.
       $self->say("Good morning ${name}!");
   }
 
+=head1 LOAD ORDER ISSUES
+
+Because Moose types are defined at runtime, you can sometimes run into
+issues with load order. In particular, you may sometimes want to use a
+class's type constraint before it exists.
+
+We recommend several things. First, define I<all> of your custom types
+in one module, C<MyApp::Types>. Second, load this module in all of
+your other modules.
+
+If you are still having load order problems, you can make use of the
+C<find_type_constraint> function exported by
+L<Moose::Util::TypeConstraints>:
+
+  my $type = find_type_constraint('MyApp::User') || class_type('MyApp::User');
+
+This sort of "find or create" logic is simple to write, and will let
+you work around load order issues.
+
 =head1 AUTHOR
 
 Dave Rolsky E<lt>autarch@urth.orgE<gt>