1 package Catalyst::ClassData;
5 use Scalar::Util 'blessed';
8 my ($class, $attribute) = @_;
9 confess("mk_classdata() is a class method, not an object method")
12 my $slot = '$'.$attribute;
15 $_[0]->meta->add_package_symbol($slot, \ $_[1]);
19 foreach my $super ( (blessed $_[0] || $_[0]), $_[0]->meta->linearized_isa ) {
20 my $meta = Moose::Meta::Class->initialize($super);
21 if( $meta->has_package_symbol($slot) ){
22 return ${ $meta->get_package_symbol($slot) };
28 confess("Failed to create accessor: $@ ")
29 unless ref $accessor eq 'CODE';
31 my $meta = $class->meta;
32 my $alias = "_${attribute}_accessor";
33 $meta->add_method($alias, $accessor);
34 $meta->add_method($attribute, $accessor);
35 $class->$attribute($_[2]) if(@_ > 2);