The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Wikibase::Cache::Backend - Abstract class for Wikibase::Cache backend.

SYNOPSIS

 use Wikibase::Cache::Backend;

 my $obj = Wikibase::Cache::Backend->new;
 my $value = $obj->get($type, $key);
 my $saved_value = $obj->save($type, $key, $value);

DESCRIPTION

Abstract class for Wikibase::Cache backend. Methods, which needs to implement are: _get() and _save().

METHODS

new

 my $obj = Wikibase::Cache::Backend->new;

Constructor.

Returns instance of object.

get

 my $value = $obj->get($type, $key);

Get cache value for $type and $key. Possible types are 'description' and 'label'.

Returns string.

save

 my $saved_value = $obj->save($type, $key, $value);

Save cache value for $type and $key. Value will be set to $value. Possible types are 'description' and 'label'.

Returns string.

ERRORS

 new():
         From Class::Utils::set_params():
                 Unknown parameter '%s'.

 get():
         This is abstract class. You need to implement '_get' method.
         Type '%s' isn't supported.
         Type must be defined.';

 save():
         This is abstract class. You need to implement '_save' method.
         Type '%s' isn't supported.
         Type must be defined.';

EXAMPLE

 use strict;
 use warnings;

 package Foo;

 use base qw(Wikibase::Cache::Backend);

 sub _get {
         my ($self, $type, $key) = @_;

         my $value = $self->{'_data'}->{$type}->{$key} || undef;

         return $value;
 }

 sub _save {
         my ($self, $type, $key, $value) = @_;

         $self->{'_data'}->{$type}->{$key} = $value;

         return $value;
 }

 package main;

 # Object.
 my $obj = Foo->new;

 # Save cached value.
 $obj->save('label', 'foo', 'FOO');

 # Get cached value.
 my $value = $obj->get('label', 'foo');

 # Print out.
 print $value."\n";

 # Output like:
 # FOO

DEPENDENCIES

Class::Utils, Error::Pure, List::Util, Readonly.

SEE ALSO

Wikibase::Cache

Wikibase cache class.

REPOSITORY

https://github.com/michal-josef-spacek/Wikibase-Cache-Backend

AUTHOR

Michal Josef Špaček mailto:skim@cpan.org

http://skim.cz

LICENSE AND COPYRIGHT

© 2021-2023 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.04