---
name: "Dancer::Object"
section: "3pm"
platform: "linux"
package: "libdancer-perl"
version: "1.3521+dfsg-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Dancer::Object"
---

# Dancer::Object(3pm)

Objects base class for Dancer

## NAME

Dancer::Object - Objects base class for Dancer

## VERSION

version 1.3521

## SYNOPSIS

```
    package My::Dancer::Extension;
    use strict;
    use warnings;
    use base 'Dancer::Object';
    __PACKAGE__->attributes( qw/name value this that/ );
    sub init {
        # our initialization code, if we need one
    }
```

## DESCRIPTION

While we **love** Moose, we can't use it for Dancer and still keep Dancer minimal, so we wrote Dancer::Object instead.

It provides you with attributes and an initializer.

## METHODS

### new

Creates a new object of whatever is based off Dancer::Object. This is a generic `"new"` method so you don't have to write one yourself when extending `"Dancer::Object"`.

It accepts arguments in a hash and runs an additional `"init"` method (described below) which you should implement.

### init

Exists but does nothing. This is so you won't have to write an initializer if you don't want to.

### clone

Creates and returns a clone of the object using Clone, which is loaded dynamically. If we cannot load Clone, we throw an exception.

### get\_attributes

Get the attributes of the specific class.

### attributes

Generates attributes for whatever object is extending Dancer::Object and saves them in an internal hashref so they can be later fetched using `"get_attributes"`.

For each defined attribute you can access its value using:

```
  $self->your_attribute_name;
```

To set a value use

```
  $self->your_attribute_name($value);
```

Nevertheless, you can continue to use these attributes as hash keys, as usual with blessed hash references:

```
  $self->{your_attribute_name} = $value;
```

Although this is possible we defend you should use the method approach, as it maintains compatibility in case `"Dancer::Object"` structure changes in the future.

### attributes\_defaults

```
  $self->attributes_defaults(length => 2);
```

given a hash (not a hashref), makes sure an object has the given attributes default values. Usually called from within an `"init"` function.

## AUTHOR

Dancer Core Developers

## COPYRIGHT AND LICENSE

This software is copyright (c) 2010 by Alexis Sukrieh.

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