7 use Moose::Meta::Class;
8 use metaclass 'Moose::Meta::Class';
12 our $VERSION = '0.09';
13 our $AUTHORITY = 'cpan:STEVAN';
20 (ref($_[0]) eq 'HASH')
21 || confess "Single parameters to new() must be a HASH ref";
28 my $self = $class->meta->new_object(%params);
29 $self->BUILDALL(\%params);
34 # NOTE: we ask Perl if we even
35 # need to do this first, to avoid
36 # extra meta level calls
37 return unless $_[0]->can('BUILD');
38 my ($self, $params) = @_;
39 foreach my $method (reverse $self->meta->find_all_methods_by_name('BUILD')) {
40 $method->{code}->($self, $params);
45 # NOTE: we ask Perl if we even
46 # need to do this first, to avoid
47 # extra meta level calls
48 return unless $_[0]->can('DEMOLISH');
50 foreach my $method ($self->meta->find_all_methods_by_name('DEMOLISH')) {
51 $method->{code}->($self);
55 sub DESTROY { goto &DEMOLISHALL }
57 # new does() methods will be created
58 # as approiate see Moose::Meta::Role
60 my ($self, $role_name) = @_;
62 || confess "You much supply a role name to does()";
63 my $meta = $self->meta;
64 foreach my $class ($meta->class_precedence_list) {
66 if $meta->initialize($class)->does_role($role_name);
72 # Cmon, how many times have you written
73 # the following code while debugging:
76 # warn Dumper \%thing;
78 # It can get seriously annoying, so why
79 # not just do this ...
83 $Data::Dumper::Maxdepth = shift if @_;
84 Data::Dumper::Dumper $self;
95 Moose::Object - The base object for Moose
99 This serves as the base object for all Moose classes. Every
100 effort will be made to ensure that all classes which C<use Moose>
101 will inherit from this class. It provides a default constructor
102 and destructor, which run all the BUILD and DEMOLISH methods in
105 You don't actually I<need> to inherit from this in order to
106 use Moose though. It is just here to make life easier.
114 This will return the metaclass associated with the given class.
118 This will create a new instance and call C<BUILDALL>.
122 This will call every C<BUILD> method in the inheritance hierarchy,
123 and pass it a hash-ref of the the C<%params> passed to C<new>.
127 This will call every C<DEMOLISH> method in the inheritance hierarchy.
129 =item B<does ($role_name)>
131 This will check if the invocant's class C<does> a given C<$role_name>.
132 This is similar to C<isa> for object, but it checks the roles instead.
134 =item B<dump ($maxdepth)>
136 Cmon, how many times have you written the following code while debugging:
141 It can get seriously annoying, so why not just use this.
147 All complex software has bugs lurking in it, and this module is no
148 exception. If you find a bug please either email me, or add the bug
153 Stevan Little E<lt>stevan@iinteractive.comE<gt>
155 =head1 COPYRIGHT AND LICENSE
157 Copyright 2006-2008 by Infinity Interactive, Inc.
159 L<http://www.iinteractive.com>
161 This library is free software; you can redistribute it and/or modify
162 it under the same terms as Perl itself.