NAME
Prty::Object - Basisklasse für alle Klassen der Klassenbibliothek
SYNOPSIS
package MyClass;
use base qw/Prty::Object/;
...
METHODS
Instantiierung
bless() - Blesse Objekt auf Klasse
Synopsis
$obj = $class->bless($ref);
Description
Objektorientierte Syntax für bless(). Blesse Objekt (Referenz) $ref auf Klasse $class und liefere die geblesste Referenz zurück. Dies geht natürlich nur, wenn $class eine direkte oder indirekte Subklasse von Prty::Object ist.
Der Aufruf ist äquivalent zu:
$obj = bless $ref,$class;
Example
$hash = Hash->bless({});
rebless() - Blesse Objekt auf eine andere Klasse um
Synopsis
$obj->rebless($class);
Description
Blesse Objekt $obj auf Klasse $class um.
Der Aufruf ist äquivalent zu:
bless $obj,$class;
Example
$hash->rebless('MyClass');
Exceptions
throw() - Wirf Exception
Synopsis
$this->throw;
$this->throw(@opt,@keyVal);
$this->throw($msg,@opt,@keyVal);
Options
- -stdout => $bool (Default: 0)
-
Erzeuge die Meldung auf STDOUT (statt STDERR), wenn -warning => 1 gesetzt ist.
- -stacktrace => $bool (Default: 1)
-
Ergänze den Exception-Text um einen Stacktrace.
- -warning => $bool (Default: 0)
-
Wirf keine Exception, sondern gib lediglich eine Warnung aus.
Description
Wirf eine Exception mit dem Fehlertext $msg und den hinzugefügten Schlüssel/Wert-Paaren @keyVal. Die Methode kehrt nur zurück, wenn Option -warning gesetzt ist.
Sonstiges
addMethod() - Erweitere Klasse um Methode
Synopsis
$this->addMethod($name,$ref);
Description
Füge Codereferenz $ref unter dem Namen $name zur Klasse $this hinzu. Existiert die Methode bereits, wird sie überschrieben.
Example
MyClass->addMethod(myMethod=>sub {
my $self = shift;
return 4711;
});
classFile() - Pfad der .pm-Datei
Synopsis
$dir = $this->classFile;
Description
Ermitte den Pfad der .pm-Datei der Klasse $this und liefere diesen zurück. Die Klasse muss bereits geladen worden sein.
Example
$path = Prty::Object->classFile;
==>
<PFAD>Prty/Object.pm
this() - Liefere Klassenname und Objektreferenz
Synopsis
($class,$self,$isClassMethod) = Prty::Object->this($this);
$class = Prty::Object->this($this);
Description
Liefere Klassenname und Objektreferenz zu Parameter $this und zeige auf dem dritten Rückgabewert an, ob die Methode als Klassen- oder Objektmethode gerufen wurde.
Ist $this ein Klassenname (eine Zeichenkette) liefere den Namen selbst und als Objektreferenz undef und als dritten Rückgabewert 1. Ist $this eine Objektreferenz, liefere den Klassennamen zur Objektreferenz sowie die Objektreferenz selbst und als dritten Rückgabewert 0.
Example
Klassen- sowie Objektmethode:
sub myMethod { my ($class,$self) = Prty::Object->this(shift); if ($self) { # Aufruf als Objektmethode } else { # Aufruf als Klassenmethode } }
Klassenmethode, die als Objektmethode gerufen werden kann:
sub mymethod { my $class = Prty::Object->this(shift); ... }
Objektmethode, die als Klassenmethode gerufen werden kann:
sub myMethod { my ($class,$self,$isClassMethod) = Prty::Object->this(shift); $self = $class->new(@_); # Ab hier ist mittels $self nicht mehr feststellbar, # ob die Methode als Klassen- oder Objektmethode gerufen wurde. # Die Variable $isclassmethod zeigt es an. $self->specialMethod if $isClassMethod; ... }
VERSION
1.124
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2018 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.