Richard Hundt > Oryx > Oryx::MetaClass

Download:
Oryx-0.24.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
Report a bug
Source  

NAME ^

Oryx::MetaClass - abstract base class for all Oryx meta types

INTERFACE ^

All Oryx components implement the interface defined herein. This is the basis for all Oryx components to share a common interface. All this really means is that when an object is created, retrieved, deleted etc. then each meta-instance (Oryx::Attribute, Oryx::Association etc.) associated with the class or instance can decide what it wants to do during each call. So when we say:

    CMS::Page->create({ ... });

then in the create() method inherited from Oryx::Class we do something similar to:

    sub create {
        my ($class, $params) = @_;
        
        # do a few things with $params, exactly what would depend
        # on whether we're using DBI or DBM back-end
        
        $_->create($query, $params, ...) foreach $class->members;
        
        # return a newly created instance
    }

Here the members method (defined in Oryx::Class returns all meta-instances hanging off the class, and to each on is the create method delegated; hence the common interface.

create

meta object's create() hook

retrieve

meta object's retrieve() hook

update

meta object's update() hook

delete

meta object's delete() hook

search

meta object's search() hook

construct

meta object's construct() hook

META-DATA ACCESS ^

Each meta-type (with the exception of Oryx::Value types) has meta-data associated with it which is usually defined in the $schema class variable used in your persistent classes.

The following are accessors for this meta-data:

meta

usually returns a hash reference which corresponds to the meta-data described in $schema.

getMetaAttribute( $name )

get a value from the meta-data hash ref keyed by $name

setMetaAttribute( $name, $value )

set a value from the meta-data hash ref keyed by $name

SEE ALSO ^

Oryx, Oryx::Class

AUTHOR ^

Copyright (C) 2005 Richard Hundt <richard NO SPAM AT protea-systems.com>

LICENSE ^

This library is free software and may be used under the same terms as Perl itself.