Hi,
Currently, I'm writing my second application that uses Object Oriented Perl. I ran into a problem that I don't understand how to solve. I have two classes: one of them is the parent class of the other. The parent class ties to a database, and then the child class is initialized with the data from the parent class. Let's say the data in the child class changes. Then, how do I make sure the changes propagate back to the parent class and then are saved to the database? If I inherit DESTROY() method from the parent class, then it would save the changes in the child class, but they are then overwritten by DESTROY() method of the parent class with parent class' data.
Below are the relevant code samples. What's The Right Way (TM) of doing something like that?
package Control; sub new { my $class = shift; my $self = bless {}, ref($class) || $class; my $cgi = CGI::Minimal->new; # retrieve request info my $session_id = $cgi->param("session_id"); my $action = $cgi->param("action"); my $dbh = Area::DB::connect(\$_connected) if !$_connected; tie %{$self}, "Tie::ODBCSession", $dbh, $session_id; # store action in the object $self->{action} = $action; return $self; } sub DESTROY { my $self = shift; untie %{$self}; } package Control::Main; @Control::Main::ISA = qw(Control); sub new { my $class = shift; my %args = @_; my $self = {}; bless $self, $class; # initialize with named parameters passed %{$self} = map { $_ => $args{$_} } keys(%args); return $self; } sub DESTROY { my $self = shift; # What do I do here? }
In reply to Inheritance and objects tied to a database by relax99
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |