8 $class->throw_error('Cannot call new() on an instance') if ref $class;
10 my $args = $class->BUILDARGS(@_);
12 my $instance = Mouse::Meta::Class->initialize($class)->new_object($args);
13 $instance->BUILDALL($args);
21 (ref($_[0]) eq 'HASH')
22 || $class->meta->throw_error("Single parameters to new() must be a HASH ref");
30 sub DESTROY { shift->DEMOLISHALL }
36 return unless $self->can('BUILD');
38 for my $class (reverse $self->meta->linearized_isa) {
41 my $code = *{ $class . '::BUILD' }{CODE}
52 return unless $self->can('DEMOLISH');
54 # We cannot count on being able to retrieve a previously made
55 # metaclass, _or_ being able to make a new one during global
56 # destruction. However, we should still be able to use mro at
57 # that time (at least tests suggest so ;)
59 foreach my $class (@{ Mouse::Util::get_linear_isa(ref $self) }) {
60 my $demolish = do{ no strict 'refs'; *{"${class}::DEMOLISH"}{CODE} };
68 my($self, $maxdepth) = @_;
70 require 'Data/Dumper.pm'; # we don't want to create its namespace
71 my $dd = Data::Dumper->new([$self]);
72 $dd->Maxdepth($maxdepth || 1);
78 my ($self, $role_name) = @_;
80 || $self->meta->throw_error("You must supply a role name to does()");
82 return $self->meta->does_role($role_name);
91 Mouse::Object - we don't need to steenkin' constructor
95 =head2 new arguments -> object
97 Instantiates a new Mouse::Object. This is obviously intended for subclasses.
99 =head2 BUILDALL \%args
101 Calls L</BUILD> on each class in the class hierarchy. This is called at the
106 You may put any business logic initialization in BUILD methods. You don't
107 need to redispatch or return any specific value.
111 Lets you override the arguments that C<new> takes. Return a hashref of
116 Calls L</DEMOLISH> on each class in the class hierarchy. This is called at
121 You may put any business logic deinitialization in DEMOLISH methods. You don't
122 need to redispatch or return any specific value.
125 =head2 does $role_name
127 This will check if the invocant's class "does" a given C<$role_name>.
128 This is similar to "isa" for object, but it checks the roles instead.
131 =head2 B<dump ($maxdepth)>
135 C'mon, how many times have you written the following code while debugging:
140 It can get seriously annoying, so why not just use this.
142 The implementation was lifted directly from Moose::Object.