7 use Moose::Meta::Class;
8 use metaclass 'Moose::Meta::Class';
12 our $VERSION = '0.06';
18 (ref($_[0]) eq 'HASH')
19 || confess "Single parameters to new() must be a HASH ref";
25 my $self = $class->meta->new_object(%params);
26 $self->BUILDALL(\%params);
31 my ($self, $params) = @_;
32 foreach my $method (reverse $self->meta->find_all_methods_by_name('BUILD')) {
33 $method->{code}->($self, $params);
39 foreach my $method ($self->meta->find_all_methods_by_name('DEMOLISH')) {
40 $method->{code}->($self);
44 sub DESTROY { goto &DEMOLISHALL }
46 # new does() methods will be created
47 # as approiate see Moose::Meta::Role
49 my ($self, $role_name) = @_;
51 || confess "You much supply a role name to does()";
52 my $meta = $self->meta;
53 foreach my $class ($meta->class_precedence_list) {
55 if $meta->initialize($class)->does_role($role_name);
68 Moose::Object - The base object for Moose
72 This serves as the base object for all Moose classes. Every
73 effort will be made to ensure that all classes which C<use Moose>
74 will inherit from this class. It provides a default constructor
75 and destructor, which run all the BUILD and DEMOLISH methods in
78 You don't actually I<need> to inherit from this in order to
79 use Moose though. It is just here to make life easier.
87 This will return the metaclass associated with the given class.
91 This will create a new instance and call C<BUILDALL>.
95 This will call every C<BUILD> method in the inheritance hierarchy,
96 and pass it a hash-ref of the the C<%params> passed to C<new>.
100 This will call every C<DEMOLISH> method in the inheritance hierarchy.
102 =item B<does ($role_name)>
104 This will check if the invocant's class C<does> a given C<$role_name>.
105 This is similar to C<isa> for object, but it checks the roles instead.
111 All complex software has bugs lurking in it, and this module is no
112 exception. If you find a bug please either email me, or add the bug
117 Stevan Little E<lt>stevan@iinteractive.comE<gt>
119 =head1 COPYRIGHT AND LICENSE
121 Copyright 2006 by Infinity Interactive, Inc.
123 L<http://www.iinteractive.com>
125 This library is free software; you can redistribute it and/or modify
126 it under the same terms as Perl itself.