Parent Directory
|
Revision Log
additional work on DB system and SQL backend. Record:: classes now support a can() method. fixed some other stuff. -sam
1 ################################################################################ 2 # WeBWorK mod_perl (c) 2000-2002 WeBWorK Project 3 # $Id$ 4 ################################################################################ 5 6 package WeBWorK::DB::Record; 7 8 =head1 NAME 9 10 WeBWorK::DB::Record - common functionality for Record classes. 11 12 =cut 13 14 use strict; 15 use warnings; 16 use Carp; 17 18 sub new($@) { 19 my ($invocant, %fields) = @_; 20 my $class = ref($invocant) || $invocant; 21 my $self = {}; 22 23 foreach ($invocant->FIELDS()) { 24 $self->{$_} = $fields{$_} if exists $fields{$_}; 25 } 26 27 bless $self, $class; 28 return $self; 29 } 30 31 sub can($$) { 32 my ($self, $function) = @_; 33 return grep { $_ eq $function } $self->FIELDS(); 34 } 35 36 sub AUTOLOAD($;@) { 37 my ($self, @args) = @_; 38 our $AUTOLOAD; 39 my ($package, $function) = $AUTOLOAD =~ m/^(.*)::(.*)$/; 40 return if $function eq "DESTROY"; 41 if (grep { $_ eq $function } $self->FIELDS()) { 42 $self->{$function} = $args[0] if @args; 43 return $self->{$function}; 44 } else { 45 croak "Undefined subroutine $package\::$function called"; 46 } 47 } 48 49 sub toString($) { 50 my $self = shift; 51 my $result; 52 foreach ($self->FIELDS()) { 53 $result .= "$_ => "; 54 $result .= defined $self->$_() ? $self->$_() : ""; 55 $result .= "\n"; 56 } 57 return $result; 58 } 59 60 1;
| aubreyja at gmail dot com | ViewVC Help |
| Powered by ViewVC 1.0.9 |