=head1 NAME
-Moose::Manual::MOP - The Moose (and Class::MOP) Meta API
+Moose::Manual::MOP - The Moose (and Class::MOP) meta API
=head1 INTRODUCTION
rather than Moose itself.
The MOP provides more than just I<read-only> introspection. It also
-lets you add attributes, method, apply roles, and much more. In fact,
-all of the declarative Moose sugar is simply a thin layer on top of
-the MOP API.
+lets you add attributes and methods, apply roles, and much more. In
+fact, all of the declarative Moose sugar is simply a thin layer on top
+of the MOP API.
If you want to write Moose extensions, you'll need to learn some of
the MOP API. The introspection methods are also handy if you want to
You can also get a list of methods:
for my $method ( $meta->get_all_methods ) {
- print $meth->fully_qualified_name, "\n";
+ print $method->fully_qualified_name, "\n";
}
Now we're looping over a list of L<Moose::Meta::Method> objects. Note
Or an attribute:
- $meta->add_attribute(
- name => 'size',
- is => 'rw',
- isa => 'Int',
- );
+ $meta->add_attribute( 'size' => { is => 'rw', isa => 'Int' } );
Obviously, this is much more cumbersome than using Perl syntax or
Moose sugar for defining methods and attributes, but this API allows
exception.
You can make a class mutable again simply by calling C<<
-$metaclass->make_mutable >>. Once you're done changing it, you can
-restore immutability by calling C<< $metaclass->make_immutable >>.
+$meta->make_mutable >>. Once you're done changing it, you can
+restore immutability by calling C<< $meta->make_immutable >>.
-However, the most common use for this part of of the meta API is as
+However, the most common use for this part of the meta API is as
part of Moose extensions. These extensions should assume that they are
being run before you make a class immutable.
=head1 GOING FURTHER
-If you're interested in extending moose, we recommend reading all of
+If you're interested in extending Moose, we recommend reading all of
the "Meta" and "Extending" recipes in the L<Moose::Cookbook>. Those
recipes show various practical applications of the MOP.