Add a confess to intialize_body in the Moose::Meta::Method::Constructor, to catch...
[gitmo/Moose.git] / lib / Moose / Cookbook.pod
CommitLineData
471c4f09 1
2=pod
3
4=head1 NAME
5
6Moose::Cookbook - How to cook a Moose
7
8=head1 DESCRIPTION
9
4711f5f7 10The Moose cookbook is a series of recipes taken from the Moose
471c4f09 11test suite. Each recipe presents some code, which demonstrates
12some of the features of Moose, and then proceeds to explain the
13details of the code.
14
734d1752 15We also provide a L<Moose::Cookbook::FAQ> and a L<Moose::Cookbook::WTF>
16for common questions and problems people have with Moose.
17
471c4f09 18=head1 RECIPES
19
496b74ab 20=head2 Basic Moose
21
471c4f09 22=over 4
23
3824830b 24=item L<Moose::Cookbook::Recipe1> - The (always classic) B<Point> example
471c4f09 25
f7f3648d 26A simple Moose-based class. Demonstrated Moose attributes and subclassing.
cb2478d4 27
3824830b 28=item L<Moose::Cookbook::Recipe2> - A simple B<BankAccount> example
471c4f09 29
f7f3648d 30A slightly more complex Moose class. Demonstrates using a method
31modifier in a subclass.
cb2478d4 32
3824830b 33=item L<Moose::Cookbook::Recipe3> - A lazy B<BinaryTree> example
471c4f09 34
f7f3648d 35Demonstrates several attribute features, including types, weak
36references, predicates ("does this object have a foo?"), defaults, and
37lazy attribute construction.
cb2478d4 38
3824830b 39=item L<Moose::Cookbook::Recipe4> - Subtypes, and modeling a simple B<Company> class hierarchy
471c4f09 40
f7f3648d 41Introduces the creation and use of custom types, a C<BUILD> method,
42and the use of C<override> in a subclass.
cb2478d4 43
3824830b 44=item L<Moose::Cookbook::Recipe5> - More subtypes, coercion in a B<Request> class
471c4f09 45
f7f3648d 46More type examples, including the use of type coercions.
cb2478d4 47
496b74ab 48=item L<Moose::Cookbook::Recipe6> - The augment/inner example
49
f7f3648d 50Demonstrates the use of C<augment> method modifiers, a way of turning
51the usual method overriding style "inside-out".
cb2478d4 52
5de2944f 53=item L<Moose::Cookbook::Recipe7> - Making Moose fast with immutable
496b74ab 54
5de2944f 55Making a class immutable greatly increases the speed of accessors and
56object construction.
cb2478d4 57
2be55428 58=item L<Moose::Cookbook::Recipe8> - Managing complex relations with trigger (TODO)
496b74ab 59
cb2478d4 60I<abstract goes here>
61
2be55428 62Work off of this http://code2.0beta.co.uk/moose/svn/Moose/trunk/t/200_examples/007_Child_Parent_attr_inherit.t
63
ceb8945d 64=item L<Moose::Cookbook::Recipe9> - Builder methods and lazy_build
496b74ab 65
fbd7ad7a 66The builder feature provides an inheritable and role-composable way to
67provide a default attribute value.
cb2478d4 68
496b74ab 69=back
70
71=head2 Moose Roles
72
73=over 4
74
75=item L<Moose::Cookbook::Recipe10> - The Moose::Role example
76
f7f3648d 77Demonstrates roles, which are also sometimes known as traits or
78mix-ins. Roles provide a method of code re-use which is orthogonal to
79subclassing.
cb2478d4 80
2e3d0a0a 81=item L<Moose::Cookbook::Recipe11> - Advanced Role Composition - method exclusion and aliasing
496b74ab 82
2e3d0a0a 83Sometimes you just want to include part of a role in your
84class. Sometimes you want the whole role but one if its methods
85conflicts with one in your class. With method exclusion and aliasing,
86you can work around these problems.
cb2478d4 87
104379bc 88=item L<Moose::Cookbook::Recipe12> - Runtime Role Composition (TODO)
89
cb2478d4 90I<abstract goes here>
91
496b74ab 92=back
93
94=head2 Meta Moose
95
96=over 4
97
98=item L<Moose::Cookbook::Recipe20> - Welcome to the meta-world (TODO)
99
cb2478d4 100I<abstract goes here>
101
496b74ab 102=item L<Moose::Cookbook::Recipe21> - The meta-attribute example
103
f7f3648d 104One way to extend Moose is to provide your own attribute
105metaclasses. Attribute metaclasses let you extend attribute
106declarations (with C<has>) and behavior to provide additional
107attribute functionality.
cb2478d4 108
496b74ab 109=item L<Moose::Cookbook::Recipe22> - The meta-attribute trait example (TODO)
a7d0cd00 110
cb2478d4 111I<abstract goes here>
112
496b74ab 113=item L<Moose::Cookbook::Recipe23> - The meta-instance example (TODO)
24a8fe99 114
cb2478d4 115I<abstract goes here>
116
496b74ab 117=item L<Moose::Cookbook::Recipe24> - The meta-class example (TODO)
1edfdf1c 118
cb2478d4 119I<abstract goes here>
120
121=back
122
123=head1 SNACKS
124
125=over 4
126
127=item L<Moose::Cookbook::Snack::Types>
128
471c4f09 129=back
130
131=head1 SEE ALSO
132
133=over 4
134
8bdc7f13 135=item L<http://www.gsph.com/index.php?Lang=En&ID=291>
471c4f09 136
137=back
138
139=head1 AUTHOR
140
141Stevan Little E<lt>stevan@iinteractive.comE<gt>
142
143=head1 COPYRIGHT AND LICENSE
144
778db3ac 145Copyright 2006-2008 by Infinity Interactive, Inc.
471c4f09 146
147L<http://www.iinteractive.com>
148
149This library is free software; you can redistribute it and/or modify
150it under the same terms as Perl itself.
151
f7f3648d 152=cut