NAME

DBIO::Base - Meta-infrastructure base for all DBIO internal classes

VERSION

version 0.900004

DESCRIPTION

DBIO::Base is the shared meta-infrastructure base for all internal DBIO classes. It bundles the common machinery that nearly every DBIO class needs:

  • use mro 'c3' for deterministic method resolution

  • DBIO::Componentised for load_components

  • Class::Accessor::Grouped for mk_group_accessors

  • mk_classdata / mk_classaccessor shortcuts

  • component_base_class so Componentised knows where to search

  • Perl subroutine attributes via MODIFY_CODE_ATTRIBUTES / _attr_cache

  • _skip_namespace_frames class data for DBIO::Carp

Internal DBIO classes (DBIO::Core, DBIO::Row, DBIO::ResultSet, DBIO::Schema, DBIO::Storage, and roughly twenty-five others) inherit from this class. User-facing result classes transitively inherit through their immediate bases.

METHODS

get_component_class

my $class = $self->get_component_class($accessor_name);

The component_class accessor-group getter (see mk_group_accessors component_class = ...>). Reads the class name via get_inherited, ensures it is loaded via "ensure_class_loaded" in Class::C3::Componentised (once per class, cached), and returns the class name -- it does not instantiate or delegate to it.

set_component_class

$self->set_component_class($accessor_name => $class_name);

The component_class accessor-group setter. Delegates directly to set_inherited; the class is not loaded until "get_component_class" reads it back.

NOT TO BE USED AS A USER-FACING BASE

User-facing result classes should inherit from DBIO::Core, not from DBIO::Base directly. DBIO::Core pulls in the standard result components (Row, Relationship, PK, Timestamp, etc.) that user code expects.

The split between DBIO::Base (meta-infrastructure) and DBIO (user sugar pragma) mirrors the Moose pattern where Moose::Meta::* sits under the hierarchy and Moose.pm provides use Moose; sugar.

AUTHOR

DBIO & DBIx::Class Authors

COPYRIGHT AND LICENSE

Copyright (C) 2026 DBIO Authors Portions Copyright (C) 2005-2025 DBIx::Class Authors Based on DBIx::Class, heavily modified.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.