Thread Klasse erweitern (9 answers)
Opened by roooot at 2009-08-07 11:21

roooot
 2009-08-07 11:21
#123932 #123932
User since
2008-03-03
276 Artikel
BenutzerIn
[default_avatar]
Hallo, ich verwende für meine OO Programmierung Class::Std. Funktioniert zufriedenstellend und gut.

Nun möchte ich gerne in diese Klasse neuen Funktionen einbinden, die dann von der Klasse aufgerufen werden können als wären es die eigenen. Normalerweise wird dann mit require die neue Klasse eingebunden und per new ein Objekt erstellt. Diesmal möchte ich allerdings kein neues Objekt, sondern die Funktionen so verfügbar machen, als wären sie schon immer in der Hauptklasse.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{
package Foo;

use Class::Std;
use Class::Std::Utils;
use Foo::More;

sub new {
  my ($class) = @_;
  my $new_object = bless anon_scalar(), $class;
  return $new_object;
}

sub bar {
  my ($self) = @_
  #...
}
}

{
package Foo::More;

sub baz {
  my ($self) = @_
  #...

}
}


#/usr/bin/perl;
use strict;

use Bar;

new Bar->baz;


Da Baz ja nicht in dem Foo Package selbst ist (sondern in Foo::More, muss die Funktion quasi in deren Namensraum geladen werden. Wie macht man das? Mit Exporter die Funktion defaultmässig exportieren, wenn Foo::More eingebunden wird? Funktioniert Exporter auch bei Klassen?


Danke für eure Hilfe, ich hoffe es ist anschaulich geworden. Im Prinzip suche ich das Perl pendant zu Mootools::Class->implement
Viele Grüße :)

View full thread Klasse erweitern