Catalyst::Plugin::Session::Store::Delegate(3pm) | User Contributed Perl Documentation | Catalyst::Plugin::Session::Store::Delegate(3pm) |
Catalyst::Plugin::Session::Store::Delegate - Delegate session storage to an application model object.
use Catalyst::Plugin::Session::Store::Delegate;
This store plugins makes delegating session storage to a first class object model easy.
The model is used to retrieve the delegate object for a given session ID.
This is normally something like DBIC's resultset object.
The model must respond to the "get_delegate" method or closure in the sesion config hash (defaults to "get_session_store_delegate").
An object must always be returned from this method, even if it means autovivifying. The object may optimize and create itself lazily in the actual store only when ->store methods are actually called.
A single delegate belongs to a single session ID. It provides storage space for arbitrary fields.
The delegate object must respond to method calls as per the "session_store_delegate_key_to_accessor" method's return values.
Typically this means responding to $obj->$field type accessors.
If necessary, the delegate should maintain an internal reference count of the stored fields, so that it can garbage collect itself when all fields have been deleted.
The fields are arbitrary, and are goverend by the various session plugins.
The basic keys that must be supported are:
If a store so chooses it may clean up session data after this timestamp, even without being told to delete.
Might not be used, if only "flash" exists.
The delegate must also respond to the "flush" method which is used to tell the store delegate that no more set/get/delete methods will be invoked on it.
The default version splits $key on the first colon, extracting the field name and the ID. It then returns the unaltered field name, and if the operation is 'delete' also provides the extra argument "undef". This works with accessor semantics like these:
$obj->foo; $obj->foo("bar"); $obj->foo(undef);
To facilitate a convention like
$obj->get_foo; $obj->set_foo("bar"); $obj->delete_foo;
or
$obj->get("foo"); $obj->set("foo", "bar"); $obj->delete("foo");
simply override this method. You may look in the source of this module to find commented out versions which should help you.
Yuval Kogman, "nothingmuch@woobling.org"
Tomas Doran, (t0m) "bobtfish@bobtfish.net" (current maintainer)
Copyright (c) 2006 the aforementioned authors. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
2022-10-15 | perl v5.36.0 |