Schrift
[thread]11478[/thread]

Probleme bei Vererbung (Seite 2)



<< |< 1 2 >| >> 18 Einträge, 2 Seiten
Struppi
 2008-03-18 12:57
#107178 #107178
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Du musst natürlich jetzt die Deklaration von Person ändern, das Objekt heißt jetzt:
Code (perl): (dl )
package UserDomain::Person;

nicht mehr
Code (perl): (dl )
package Person;



[EDIT]Was dir Renee auch bereits gesagt hat wie ich grad sehe.
renee
 2008-03-18 12:57
#107179 #107179
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Noch ein Tipp: verwende Wiki:[tt]use strict[/tt] und use warnings...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
tsy
 2008-03-18 15:07
#107197 #107197
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
Hallo, renee und Struppi, ich bin langsam echt am Verzeifeln. Ich habe versucht umzusetzen, was Ihr geraten habt aber habe noch immer keine Lösung.
Ich versuche deswegen noch mal alles so gut es geht zusammenzufassen, auch vielleicht unwichtige Informationen:
Ich nutze EasyEclipse for LAMP mit Epic als Entwicklingsumgebung.
in meinem workspace habe ich das Projekt-Verzeichnis angelegt, in dem sich die Skripte befinden (momentan nur zum testen, ich benutze normalerweise use strict;)
Code (perl): (dl )
1
2
3
4
5
use warnings;
use UserDomain::Benutzer;

$someone = UserDomain::Benutzer->new("ez", "eins", "zwei", "0", "de", "0");
print $someone;

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package UserDomain::Person;

use strict;

sub new {
        my $class = shift;
        my $self = bless {} , ref $class || $class;
        my ($id, $nachname, $vorname, $telnr, $sprache, $aktiv) = @_;

        $self->{'id'} = $id;
        $self->{'nachname'} = $nachname;
        $self->{'vorname'} = $vorname;
        $self->{'telnr'} = $telnr;
        $self->{'sprache'} = $sprache;
        $self->{'aktiv'} = $aktiv;

        # my $self = bless {}, ref $proto || $proto;
        #bless $self, ref $class || $class; # wegen Vererbung
        return $self;
}

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package UserDomain::Benutzer;

our @ISA = qw(UserDomain::Person);
use UserDomain::Person;

#use NET::ldap;
use strict;

sub new {
        my $class = shift;
        my ($id, $nachname, $vorname, $telnr, $sprache, $aktiv) = @_;
        $class->SUPER::new($id, $nachname, $vorname, $telnr, $sprache, $aktiv);
        $class->{'letzterLogin'} = "";
        $class->{'berechtigung'} = 0;
}


Der Fehler, den ich bekomme ist
Code: (dl )
Can't use string ("UserDomain::Benutzer") as a HASH ref while "strict refs" in use at [...]UserDomain/Benutzer.pm line 13.


Sorry, wenn ich es immer noch nicht schnalle...

Viele Grüße,

tsy
renee
 2008-03-18 15:15
#107199 #107199
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
In $class steht nur der Klassenname als String drin, aber Du versuchst, darauf zuzugreifen als ob es eine Hashreferenz wäre. Mach mal
Code (perl): (dl )
1
2
3
4
5
6
7
8
sub new {
        my $class = shift;
        my ($id, $nachname, $vorname, $telnr, $sprache, $aktiv) = @_;
        my $self = $class->SUPER::new($id, $nachname, $vorname, $telnr, $sprache, $aktiv);
        $self->{'letzterLogin'} = "";
        $self->{'berechtigung'} = 0;
        return $self;
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
tsy
 2008-03-18 15:46
#107201 #107201
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
Es scheint, als würde dieser Teil jetzt funktionieren. :-)

Eclipse beschwert sich allerdings noch immer bei use UserDomain::Person;, dass UserDomain::Person.pm nicht in @INC gefunden werden kann, aber es läuft durch. [s]Allerdings steht in der Variable $someone nur 0 drin, nicht eine Referenz auf die Klasse. [/s]Was ist denn da nun wieder passiert?

EDIT: ich habe ein return $self; vergessen :-)
Falls aber noch jemand herausfindet, warum Eclipse meckert (siehe oben), wäre ich sehr gespannt.
renee
 2008-03-18 15:57
#107203 #107203
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Keine Ahnung was Eclipse da im Hintergrund alles macht...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
tsy
 2008-03-18 16:08
#107205 #107205
User since
2008-03-17
54 Artikel
BenutzerIn
[default_avatar]
naja, Hauptsache es läuft.
Vielen Dank Euch allen für die schnelle und ausdauernde Hilfsbereitschaft! :-)

Viele Grüße,

tsy
Struppi
 2008-03-19 10:10
#107222 #107222
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Die Fehlermeldung in Eclipse rührt wohl daher, dass du @INC erweitert hast, was Eclipse aber in UserDomain::Benutzer nicht mitbekommt. Das kann man also ignorieren und läßt sich meines Wissens nicht abschalten.
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



View all threads created 2008-03-17 18:11.