1 package Catalyst::ClassData;
4 use Scalar::Util 'blessed';
7 my ($class, $attribute) = @_;
8 confess("mk_classdata() is a class method, not an object method")
11 my $slot = '$'.$attribute;
14 $_[0]->meta->add_package_symbol($slot, \ $_[1]);
17 foreach my $super ( $_[0], $_[0]->meta->linearized_isa ) {
18 my $meta = $super->meta;
19 if( $meta->has_package_symbol($slot) ){
20 return $meta->get_package_symbol($slot);
25 my $accessor = eval $code;
26 confess("Failed to create accessor: $@ \n $code \n")
27 unless ref $accessor eq 'CODE';
29 my $meta = $class->meta;
30 my $alias = "_${attribute}_accessor";
31 $meta->add_method($alias, $accessor);
32 $meta->add_method($attribute, $accessor);
33 $class->$attribute($_[2]) if(@_ > 2);
43 # $_[0]->meta->add_package_symbol(\''.$slot.'\', \ $_[1]);
46 # foreach my $super ( $_[0], $_[0]->meta->linearized_isa ) {
47 # my $meta = $super->meta;
48 # if( $meta->has_package_symbol(\''.$slot.'\') ){
49 # return $meta->get_package_symbol(\''.$slot.'\');
54 # my $accessor = eval $code;