---
name: "Class::ObjectTemplate"
section: "3pm"
platform: "linux"
package: "libclass-objecttemplate-perl"
version: "0.7-9"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Class::ObjectTemplate"
---

# Class::ObjectTemplate(3pm)

Perl extension for an optimized template builder base class.

## NAME

Class::ObjectTemplate - Perl extension for an optimized template builder base class.

## SYNOPSIS

```
  package Foo;
  use Class::ObjectTemplate;
  require Exporter;
  @ISA = qw(Class::ObjectTemplate Exporter);
  attributes('one', 'two', 'three');
  # initialize will be called by new()
  sub initialize {
    my $self = shift;
    $self->three(1) unless defined $self->three();
  }
  use Foo;
  $foo = Foo->new();
  # store 27 in the 'one' attribute
  $foo->one(27);
  # check the value in the 'two' attribute
  die "should be undefined" if defined $foo->two();
  # set using the utility method
  $foo->set_attribute('one',27);
  # check using the utility method
  $two = $foo->get_attribute('two');
  # set more than one attribute using the named parameter style
  $foo->set_attributes('one'=>27, 'two'=>42);
  # or using array references
  $foo->set_attributes(['one','two'],[27,42]);
  # get more than one attribute
  @list = $foo->get_attributes('one', 'two');
  # get a list of all attributes known by an object
  @attrs = $foo->get_attribute_names();
  # check that initialize() is called properly
  die "initialize didn't set three()" unless $foo->three();
```

## DESCRIPTION

Class::ObjectTemplate is a utility class to assist in the building of other Object Oriented Perl classes.

It was described in detail in the O\\'Reilly book, "Advanced Perl Programming" by Sriram Srinivasam.

### EXPORT

attributes(@name\_list)

This method creates a shared setter and getter methods for every name in the list. The method also creates the class constructor, `"new()"`.

**WARNING**: This method *must* be invoked within the module for every class that inherits from Class::ObjectTemplate, even if that class defines no attributes. For a class defining no new attributes, it should invoke `"attributes()"` with no arguments.

## AUTHOR

Original code by Sriram Srinivasam.

Fixes and CPAN module by Jason E. Stewart (jason@openinformatics.com)

## SEE ALSO

http://www.oreilly.com/catalog/advperl/

[**perl**(1)](/perl/1.md).

Class::ObjectTemplate::DB
