Objekte in MySQL und Objektmanager in Perl
CREATE TABLE `objects` (
`oid` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
`att` varchar(128) NOT NULL DEFAULT '',
`val` longtext DEFAULT NULL,
PRIMARY KEY (`oid`,`att`),
KEY `oid` (`oid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci
Wie zu sehen ist hat die Tabelle lediglich 3 Felder. Das ermöglicht Objekte mit beliebig vielen Eigenschafen als Attribut => Value
Paare. Mit der für das Feld oid
(Object-ID) gesetzten Collation wird ebendieses Feld case-sensitive.
use strict;
use warnings;
my $browse = sub{
my $self = shift;
if( my $dbh = $self->dbh('myweb') ){
$self->{STASH}{create} = $dbh->selectrow_arrayref("show create table objects")->[1];
$self->{STASH}{module} = $dbh->selectrow_hashref("select * from rcs where name='Objects.pm' order by id desc limit 1")->{content};
}
else{
$self->{STASH}{create} = "Code kann temp. nicht gzeigt werden, bitte später versuchen.";
$self->{STASH}{module} = "Code kann temp. nicht gzeigt werden, bitte später versuchen.";
}
};
###########################################################################
{ browse => $browse }
Alle Funktionen sind statisch, also Klassenmethoden.
use strict;
use warnings;
use Objects;
Objects::store( foo => {name => 'foo'});
Objects::store( bar => {name => 'bar'});
my $foo = Objects::fetch('foo');
my $bar = Objects::fetch('bar','Foo'); # $bar as instance of Class Foo
print Objects::names(); # foo bar
print Objects::rm('foo','bar'); # 2
Die zu speichernden Objekte haben also einen Namen und die Eigenschaften als Schlüssel => Werte
- Paare. Mit der fetch()
-Methode gibt es die Möglichkeit das Objekt als Instanz derjenigen Klasse zu übergeben deren Name gleich mit übergeben wird.
Datenschutzerklärung: Diese Seite dient rein privaten Zwecken. Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. sos@rolfrost.de.