Hi, Monks
How do I properly extend a class?
I was dreaming of creating my own SVG drawing class having SVG's inherited methods and then mine. As the wiser than me can foresee, the accompanying code spits out:
Can't locate object method "Foo" via package "SVG::Element" at ./test. +pl line 17.
Of course, the message refers to the last line in Bar().
Does this mean I should mimic every SVG method I need into MyPackage (possibly by way of __SUPER__:: calls)? Or should I make $g behave as a MyPackage object by way of casting? Or?
#!/usr/bin/perl use warnings; use strict; package MyPackage; use parent 'SVG'; sub Foo { my ($self, $fooArg) = @_; return $self->rectangle(id => $fooArg, x => 10, y => 10); } sub Bar { my ($self, $barArg) = @_; my $g = $self->group(id => $barArg); return $g->Foo("g$barArg"); } package main; my $s = MyPackage->new(); $s->Foo("someID"); $s->Bar("someOtherID"); print $s->xmlify(namespace => 'svg');
In reply to Extending a class by betacentauri
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |