7 use Moose::Meta::Class;
8 use metaclass 'Moose::Meta::Class';
12 our $VERSION = '0.08';
13 our $AUTHORITY = 'cpan:STEVAN';
19 (ref($_[0]) eq 'HASH')
20 || confess "Single parameters to new() must be a HASH ref";
26 my $self = $class->meta->new_object(%params);
27 $self->BUILDALL(\%params);
32 # NOTE: we ask Perl if we even
33 # need to do this first, to avoid
34 # extra meta level calls
35 return unless $_[0]->can('BUILD');
36 my ($self, $params) = @_;
37 foreach my $method (reverse $self->meta->find_all_methods_by_name('BUILD')) {
38 $method->{code}->($self, $params);
43 # NOTE: we ask Perl if we even
44 # need to do this first, to avoid
45 # extra meta level calls
46 return unless $_[0]->can('DEMOLISH');
48 foreach my $method ($self->meta->find_all_methods_by_name('DEMOLISH')) {
49 $method->{code}->($self);
53 sub DESTROY { goto &DEMOLISHALL }
55 # new does() methods will be created
56 # as approiate see Moose::Meta::Role
58 my ($self, $role_name) = @_;
60 || confess "You much supply a role name to does()";
61 my $meta = $self->meta;
62 foreach my $class ($meta->class_precedence_list) {
64 if $meta->initialize($class)->does_role($role_name);
70 # Cmon, how many times have you written
71 # the following code while debugging:
74 # warn Dumper \%thing;
76 # It can get seriously annoying, so why
77 # not just do this ...
81 $Data::Dumper::Maxdepth = shift if @_;
82 Data::Dumper::Dumper $self;
93 Moose::Object - The base object for Moose
97 This serves as the base object for all Moose classes. Every
98 effort will be made to ensure that all classes which C<use Moose>
99 will inherit from this class. It provides a default constructor
100 and destructor, which run all the BUILD and DEMOLISH methods in
103 You don't actually I<need> to inherit from this in order to
104 use Moose though. It is just here to make life easier.
112 This will return the metaclass associated with the given class.
116 This will create a new instance and call C<BUILDALL>.
120 This will call every C<BUILD> method in the inheritance hierarchy,
121 and pass it a hash-ref of the the C<%params> passed to C<new>.
125 This will call every C<DEMOLISH> method in the inheritance hierarchy.
127 =item B<does ($role_name)>
129 This will check if the invocant's class C<does> a given C<$role_name>.
130 This is similar to C<isa> for object, but it checks the roles instead.
132 =item B<dump ($maxdepth)>
134 Cmon, how many times have you written the following code while debugging:
139 It can get seriously annoying, so why not just use this.
145 All complex software has bugs lurking in it, and this module is no
146 exception. If you find a bug please either email me, or add the bug
151 Stevan Little E<lt>stevan@iinteractive.comE<gt>
153 =head1 COPYRIGHT AND LICENSE
155 Copyright 2006, 2007 by Infinity Interactive, Inc.
157 L<http://www.iinteractive.com>
159 This library is free software; you can redistribute it and/or modify
160 it under the same terms as Perl itself.