|
Lines 900-906
The autoload method is used only to get and set values for an objects properties
Link Here
|
| 900 |
=cut |
900 |
=cut |
| 901 |
|
901 |
|
| 902 |
sub AUTOLOAD { |
902 |
sub AUTOLOAD { |
| 903 |
my $self = shift; |
903 |
my ($self) = @_; |
| 904 |
|
904 |
|
| 905 |
my $method = our $AUTOLOAD; |
905 |
my $method = our $AUTOLOAD; |
| 906 |
$method =~ s/.*://; |
906 |
$method =~ s/.*://; |
|
Lines 908-920
sub AUTOLOAD {
Link Here
|
| 908 |
my @columns = @{$self->_columns()}; |
908 |
my @columns = @{$self->_columns()}; |
| 909 |
# Using direct setter/getter like $item->barcode() or $item->barcode($barcode); |
909 |
# Using direct setter/getter like $item->barcode() or $item->barcode($barcode); |
| 910 |
if ( grep { $_ eq $method } @columns ) { |
910 |
if ( grep { $_ eq $method } @columns ) { |
| 911 |
if ( @_ ) { |
911 |
no strict 'refs'; |
| 912 |
$self->_result()->set_column( $method, @_ ); |
912 |
*{$AUTOLOAD} = sub { |
| 913 |
return $self; |
913 |
my $self = shift; |
| 914 |
} else { |
914 |
if ( @_ ) { |
| 915 |
my $value = $self->_result()->get_column( $method ); |
915 |
$self->_result()->set_column( $method, @_); |
| 916 |
return $value; |
916 |
return $self; |
| 917 |
} |
917 |
} else { |
|
|
918 |
return $self->_result()->get_column( $method ); |
| 919 |
} |
| 920 |
}; |
| 921 |
goto &{$AUTOLOAD}; |
| 918 |
} |
922 |
} |
| 919 |
|
923 |
|
| 920 |
my @known_methods = qw( is_changed id in_storage get_column discard_changes make_column_dirty ); |
924 |
my @known_methods = qw( is_changed id in_storage get_column discard_changes make_column_dirty ); |
|
Lines 924-930
sub AUTOLOAD {
Link Here
|
| 924 |
show_trace => 1 |
928 |
show_trace => 1 |
| 925 |
) unless grep { $_ eq $method } @known_methods; |
929 |
) unless grep { $_ eq $method } @known_methods; |
| 926 |
|
930 |
|
| 927 |
|
931 |
# Remove $self so that @_ now contain arguments only |
|
|
932 |
shift; |
| 928 |
my $r = eval { $self->_result->$method(@_) }; |
933 |
my $r = eval { $self->_result->$method(@_) }; |
| 929 |
if ( $@ ) { |
934 |
if ( $@ ) { |
| 930 |
Koha::Exceptions::Object->throw( ref($self) . "::$method generated this error: " . $@ ); |
935 |
Koha::Exceptions::Object->throw( ref($self) . "::$method generated this error: " . $@ ); |
| 931 |
- |
|
|